﻿using ConfExpert.Datasets;
using ConfExpert.Forms.Araclar;
using ConfExpert.Forms.Base;
using ConfExpert.Forms.Depo.Aksesuar;
using ConfExpert.Forms.Rapor;
using ConfExpert.Properties;
using ConfExpert.Utility;
using DevExpress.XtraBars;
using DevExpress.XtraEditors;
using DevExpress.XtraEditors.Controls;
using DevExpress.XtraEditors.Repository;
using DevExpress.XtraGrid.Columns;
using DevExpress.XtraGrid.Views.Grid;
using DevExpress.XtraReports.UI;
using DevExpress.XtraVerticalGrid.Events;
using DevExpress.XtraVerticalGrid.Rows;
using DevTeam;
using System;
using System.Collections.Generic;
using System.Data;
using System.Drawing;
using System.Windows.Forms;

namespace ConfExpert.Forms.Depo.Kauf
{
    public partial class Orders : XForm
    {
        BindingSource bsOrders, bsAksesuar;
        string TotalExpression = "";
        int CustomerId = -1;
        int DagilimId = 0;
        //DateTime LastUpdate = new DateTime(2000, 1, 1);

        #region Constructors
        public Orders()
        {
            InitializeComponent();
            TAM.OrdersTableAdapter = new Datasets.MyDataTableAdapters.OrdersTableAdapter();
            TAM.KaufOrdersAksesuarTableAdapter = new Datasets.MyDataTableAdapters.KaufOrdersAksesuarTableAdapter();
        }
        public Orders(int customerId)
            : this()
        {
            CustomerId = customerId;
        } 
        #endregion

        #region Garni resimleri ekle
        void gvOrders_RowCellClick(object sender, RowCellClickEventArgs e)
        {
            GridView gv = sender as GridView;
            switch (gv.FocusedColumn.FieldName)
            {
                case "S1": Goster(gv.GetFocusedRowCellValue("Product1Id").ToInt()); break;
                case "S2": Goster(gv.GetFocusedRowCellValue("Product2Id").ToInt()); break;
                case "S3": Goster(gv.GetFocusedRowCellValue("Product3Id").ToInt()); break;
                case "S4": Goster(gv.GetFocusedRowCellValue("Product4Id").ToInt()); break;
                case "S5": Goster(gv.GetFocusedRowCellValue("Product5Id").ToInt()); break;
            }
        }

        public void gvx_CustomUnboundColumnData(object sender, DevExpress.XtraGrid.Views.Base.CustomColumnDataEventArgs e)
        {
            if (e.Column.FieldName.StartsWith("S"))
                if (e.Column.FieldName.Length == 2)
                    if (e.ListSourceRowIndex > -1)
                        if (e.IsGetData)
                        {
                            string col = e.Column.FieldName.Replace("S", "Product") + "Id";

                            if (((DataRowView)e.Row)[col].ToInt() > 0)
                            {
                                DataRow[] dr = AppSession.Lookups.V_Kumas.Select("ProductId=" + ((DataRowView)e.Row)[col].ToString());
                                if (dr.Length > 0)
                                    if (dr[0]["PhotoMikro"] != DBNull.Value)
                                        e.Value = dr[0]["PhotoMikro"];
                            }
                        }
        }

        void AddScan(GridView gridview, params string[] FieldNames)
        {
            foreach (string FieldName in FieldNames)
            {
                GridColumn colPhoto = new GridColumn();
                colPhoto.FieldName = FieldName;
                gridview.Columns.Add(colPhoto);

                colPhoto.ColumnEdit = new RepositoryItemPictureEdit();
                colPhoto.UnboundType = DevExpress.Data.UnboundColumnType.Object;

                (colPhoto.ColumnEdit as RepositoryItemPictureEdit).SizeMode = PictureSizeMode.Clip;
                (colPhoto.ColumnEdit as RepositoryItemPictureEdit).NullText = " ";
            }
        } 
        #endregion
        
        #region Gridin caption ve sırasını setleme
        private DataTable InitFromDB(GridView gridView, int GridViewId, int Parameter)
        {
            DataTable dt = Session.DataManager.ExecuteDataTable("GM_GetColumnSettings2", Parameter);

            foreach (GridColumn col in gridView.Columns)
                col.Visible = false;

            foreach (DataRow dr in dt.Rows)
            {
                string colName = dr["ColumnName"].ToString();

                if (gridView.Columns[colName] != null)
                    if (dt.Columns.Contains("Visible") && dr["Visible"].ToInt() > 0)
                        if (dt.Columns.Contains("Position") && dr["Position"] != null)
                            gridView.Columns[colName].VisibleIndex = (int)dr["Position"];
            }
            return dt;
        }
        #endregion

        #region Zegna mağaza dağılımı
        private void MagazaDagilimiZegna_Click(object sender, EventArgs e)
        {
            string idxs = gvOrders.GetSelectedValues("idx");
            AppSession.MainForm.ShowMdiChildForm(typeof(MagazaDagilimiZegna), idxs);
        }
        #endregion

        #region Form load
        DataTable dtCaptions;
        private void Orders_Load(object sender, EventArgs e)
        {
            for (int i = 1; i < 29; i++)
                TotalExpression = TotalExpression + string.Format("ISNULL([A{0}], 0)", i.ToString().PadLeft(2, '0')) + "+";

            TotalExpression = TotalExpression.RemoveIfEndsWith("+");

            string customer = AppSession.Lookups.V_Customer.FindByCustomerId(CustomerId).Name;
            this.Text = customer + " Siparişleri";
            txtInfo.Caption = customer;    // "Sipariş Takip";            

            ds.Orders.Columns.Add("Total", typeof(int), TotalExpression);

            ds.Orders.Columns.Add("KesilenAdet", typeof(int));
            ds.Orders.Columns.Add("YuklenenAdet", typeof(int));
            ds.Orders.Columns.Add("AtelyeId", typeof(int));
            ds.Orders.Columns.Add("YuklemeTarihi", typeof(DateTime));
            ds.Orders.Columns.Add("GarniBirim", typeof(decimal));
            ds.Orders.Columns.Add("BirimMetraj", typeof(decimal));
            ds.Orders.Columns.Add("PlanlandiMi", typeof(bool));
            ds.Orders.Columns.Add("BMTalepTrh", typeof(DateTime));
            ds.Orders.Columns.Add("BMCevapTrh", typeof(DateTime));
            ds.Orders.Columns.Add("ToplamFiyat", typeof(decimal), "GomlekFiyati + ISNULL(Upcharge,0)");

            ds.Orders.Columns.Add("FabricOK", typeof(bool), "MAX(Child(FK_KaufOrdersCut_KaufOrders_idx).FabricOK)");
            ds.Orders.Columns.Add("CutOrder", typeof(int), "MAX(Child(FK_KaufOrdersCut_KaufOrders_idx).CutOrder)");
            ds.Orders.Columns.Add("AksesuarAdedi", typeof(int), "Count(Child(FK_KaufOrdersAksesuar_KaufOrders_idx).AksesuarId)");
            ds.Orders.Columns.Add("QtyInTransit", typeof(decimal));
            ds.Orders.Columns.Add("ETA", typeof(string));

            bsOrders = new BindingSource(ds, "Orders");
            bsAksesuar = new BindingSource(bsOrders, "FK_KaufOrdersAksesuar_KaufOrders_idx");

            AddBsToList(bsOrders, bsAksesuar);

            InitGridView(gvOrders, bsOrders);
            InitGridView(gvMyTreeLines, bsAksesuar);

            dtCaptions = InitFromDB(gvOrders, 1, CustomerId);

            cbAlanlar.EditValue = "Sipariş Alanları";

            gvOrders.FormatAsNumber(2, "GomlekFiyati", "Upcharge", "ToplamFiyat", "GarniBirim", "BirimMetraj", "TahminiBM", "KumasFiyati");
            gvOrders.FormatAsNumber(0, "AksesuarAdedi", "QtyInTransit");
            gvOrders.Columns["KumasFiyati"].DisplayFormat.FormatString = "#,##0.00";

            gvOrders.SetFilterTypeToCheckedList("Sezon", "DosyaAdi", "Line", "DugmeKodu", "DugmeRengi", "Termin", "DosyaNo", "Artikel", "ProductId", "Model", "ModelNo", "Renk", "DugmeRengi", "DugmeKodu", "stGenelId", "OrderNr", "GarniArt", "GarniArt2","OrderRef");

            for (int i = 1; i < 29; i++)
                gvOrders.FormatAsNumber(0, String.Format("A{0}", i.ToString().PadLeft(2, '0')));

            gvOrders.YanYanaGetir("Scan:ProductId");

            gvMyTreeLines.MakeColumnInvisible("KaufOrdersAksesuarId", "idx");
            gvMyTreeLines.YanYanaGetirSagina("Boyama", "InsertedOn");

            if (CustomerId == 23)
                gvOrders.Columns["Dagit"].VisibleIndex = gvOrders.Columns["Total"].VisibleIndex;

            gvOrders.MakeColumnsReadOnly("DosyaNo", "KesilenAdet", "YuklenenAdet", "AtelyeId", "Total", "YuklemeTarihi", "GarniBirim", "BirimMetraj", "PlanlandiMi", "AksesuarCikisTalebi", "KumasCikisEmriId", "TelaCikisEmriId", "TopEni", "Garni1En", "Garni2En", "Garni3En", "Garni4En", "Garni5En", "Garni6En");
            gvOrders.OptionsView.NewItemRowPosition = NewItemRowPosition.Bottom;
            gvMyTreeLines.OptionsView.NewItemRowPosition = NewItemRowPosition.Bottom;

            gvOrders.AddSummary("KesilenAdet", "YuklenenAdet", "Total");
            for (int i = 1; i < 29; i++)
                gvOrders.AddSummary(String.Format("A{0}", i.ToString().PadLeft(2, '0')));

            gvMyTreeLines.Columns["Qty"].DisplayFormat.FormatString = "#,##0.##";

            RepositoryItem ri = RI(Rp.Tela);
            foreach (string colName in "TYaka,TApaciYaka,TMostraYaka,TYakaAlt,TKusak,TKusakAlti,TPoligot,TManset,TDubleManset,TMansetVerev,TMansetAlti,TMansetPoligot,TApartura,TApolet,TCepKapagi,TKusakUcu,TEkstraTela,TDugmeAlti".Split(','))
                gvOrders.Columns[colName].ColumnEdit = ri;
            
            if (CustomerId == 25)
            {
                foreach (DevExpress.XtraGrid.Columns.GridColumn col in gvOrders.Columns)
                    col.OptionsFilter.FilterPopupMode = FilterPopupMode.CheckedList;
            }

            gvOrders.Columns["CutOrder"].OptionsFilter.ShowBlanksFilterItems = DevExpress.Utils.DefaultBoolean.True;

            gvOrders.Columns["DagilimId"].ColumnEdit = RI(Rp.Dagilim);
            gvOrders.FocusedRowChanged += gvOrders_FocusedRowChanged;

            DagilimId = intParse(bsOrders, "DagilimId");

            DagilimChanged();

            if (ytk(120))
            {
                gvOrders.MakeColumnVisible("ToplamFiyat");
                if (CustomerId == 241)
                    gvOrders.MakeColumnVisible("Ek42");
                gvOrders.Columns["ToplamFiyat"].VisibleIndex = gvOrders.Columns["Total"].VisibleIndex + 1;
            }

            DataTable dtBrand = Session.DataManager.ExecuteDataTable("GetCustomersBrands", CustomerId);
            DevExpress.XtraEditors.Repository.RepositoryItemGridLookUpEdit riMyBrands = GetCustomGLE(dtBrand, "Name", "BrandId");
            gvOrders.Columns["BrandId"].ColumnEdit = riMyBrands;

            btnGetir.Click += new EventHandler(btnGetir_Click);
            btnTemizle.Click += new EventHandler(btnTemizle_Click);

            CreateVerticalGrid();

            langIndex = Session.DataManager.ExecuteScalar("GetCustomerCulture", CustomerId, WhoAmI).ToInt();

            beiDil.EditValueChanged += beiDil_EditValueChanged;
            beiDil.Edit.Assign(RI(Rp.Culture));
            beiDil.EditValue = langIndex;

            gvOrders.Columns["PlanlandiMi"].Caption = "Plan?";
            gvOrders.Columns["PlanlandiMi"].ToolTip = "Planlandı mı?";

            if (gvOrders.Columns.Contains(gvOrders.Columns["Product5Id"]))
            {
                AddScan(gvOrders, "S1", "S2", "S3", "S4", "S5");
                gvOrders.SetCaptions("S1:Sc1", "S2:Sc2", "S3:Sc3", "S4:Sc4", "S5:Sc5");
                for (int i = 1; i <= 5; i++)
                    if (gvOrders.Columns.Contains(gvOrders.Columns["Product" + i + "Id"]))
                        if (gvOrders.Columns["Product" + i + "Id"].VisibleIndex > -1)
                            gvOrders.Columns["S" + i].VisibleIndex = gvOrders.Columns["Product" + i + "Id"].VisibleIndex;

                gvOrders.CustomUnboundColumnData -= new DevExpress.XtraGrid.Views.Base.CustomColumnDataEventHandler(gvx_CustomUnboundColumnData);
                gvOrders.CalcRowHeight -= new RowHeightEventHandler(gridview_CalcRowHeight);

                gvOrders.RowCellStyle += gv_RowCellStyle;
                gvOrders.CustomUnboundColumnData += new DevExpress.XtraGrid.Views.Base.CustomColumnDataEventHandler(gvx_CustomUnboundColumnData);
                gvOrders.CalcRowHeight += new RowHeightEventHandler(gridview_CalcRowHeight);
                gvOrders.RowCellClick += gvOrders_RowCellClick;
            }

            Rfrsh();
            CutOrder();

            string DagilimFilter = "DagilimId IN (0";
            foreach (MyData.DagilimCustomerRow r in ds.DagilimCustomer)
                DagilimFilter += ", " + r["DagilimId"].ToString();
            DagilimFilter += ")";

            if (ds.DagilimCustomer.Rows.Count > 0)
            {
                DataTable dt = AppSession.Lookups.Dagilim.Select(DagilimFilter).CopyToDataTable();
                RepositoryItemGridLookUpEdit riDagilimFilter = GetCustomGLE(dt, "Name", "DagilimId");
                gvOrders.Columns["DagilimId"].ColumnEdit = riDagilimFilter;
            }
            
            bool powerUser = (ds.EmpCustomer.Select("UserId=" + WhoAmI).Length > 0);

            if (powerUser)
            {
                bbiSave.Visibility = BarItemVisibility.Always;
                bbiArtikel.Visibility = BarItemVisibility.Always;
            }

            GridManager gm = GridManager.GetManager(gvOrders);
            if (powerUser)
            {
                Image listIcon = Resources.TableHS;

                gm.GridMenu.AddMenu("Alan Setle", AlanSetle, Resources.CheckEdit_Icon, true);
                gm.GridMenu.AddMenu("Kesim Föyü Önizle", KesimFoyuOnizlemeToplu);
                gm.GridMenu.AddMenu("Dosya Numarası Al", KesimFoyu_Click);
                gm.GridMenu.AddMenu("Toplu Dosya Numarası Al", TopluDosyaNoAl);
                gm.GridMenu.AddMenu("Varolan Dosyaya Ekle", DosyayaEkle_Click);
                gm.GridMenu.AddMenu("Dosya No İptal Et", CancelKesimNo);
                gm.GridMenu.AddMenu("Dosya Kapama Raporu", DosyaKapama_Click);
                gm.GridMenu.AddMenu("Kesim Bilgi Formu", KesimBilgi_Click);
                gm.GridMenu.AddMenu("Aksesuar Kartelası Çıkar", AksNumune);
                gm.GridMenu.AddMenu("Nakış Kartelası Çıkar", NakisKartelasi_Click);
                gm.GridMenu.AddMenu("Yıkama Kartelası Çıkar", YikamaKartelasi_Click);
                if (ytk(206) && CustomerId == 149)
                    gm.GridMenu.AddMenu("Çıkış Emirlerini Sil", CikisEmriSil_Click);

                gm.GridMenu.AddMenu("Aksesuar İhtiyacını Çıkar", AksesuarIhtiyaci, listIcon, true);
                gm.GridMenu.AddMenu("Aksesuar İhtiyacını Çıkar (Toplu)", AksesuarIhtiyaciToplu, listIcon);
                gm.GridMenu.AddMenu("Kumaş İhtiyacını Çıkar", KumasIhtiyaci);
                gm.GridMenu.AddMenu("Tela İhtiyacını Çıkar", TelaIhtiyaciCikar);

                gm.GridMenu.AddMenu("Stok Durumuna bak", StokDurumu_Click, listIcon, true);
                gm.GridMenu.AddMenu("Bu artikelin beklenen gelişleri", BeklenenGelisler);
                gm.GridMenu.AddMenu("Tarihe göre beklenen gelişler", BeklenenGelislerByDate);
                gm.GridMenu.AddMenu("Kumaş Enlerini Seç ", KumasEni_Click);
                gm.GridMenu.AddMenu("Modelhaneden Birim Metraj İste", ModelhanedenBirimMetrajIste2);
                gm.GridMenu.AddMenu("Sütunları Düzenle", SutunlariDuzenle_Click);
                gm.GridMenu.AddMenu("Renkle Değişen Aksesuarlar", RenkleDegisen);
                if (CustomerId == 241)
                    gm.GridMenu.AddMenu("Ürün ağacı oluştur", CreateBOM);
                gm.GridMenu.AddMenu("Invoice", Invoice);

                if (CustomerId != 149)
                    gm.GridMenu.AddMenu("Satırı Parçala", SatirParcala_Click);
                else
                    gm.GridMenu.AddMenu("Satırı Çoğalt", SatirCogalt_Click); // CAFE COTTON ICIN SADECE

                gm.GridMenu.AddMenu("Yabancı etiket adetleri gir", YabanciEtiket_Click);
                gm.GridMenu.AddMenu("Yıkama Sonuçları", YikamaSonuclari);

                switch (CustomerId)
                {
                    case 149: gm.GridMenu.AddMenu("Mağaza Dağılımını Göster", MagazaDagilimi_Click); break;
                    case 366: gm.GridMenu.AddMenu("Mağaza Dağılımını Göster", MagazaDagilimiZegna_Click); break;
                    case 68:
                        gm.GridMenu.AddMenu("Mağaza Dağılımını Güncelle", MagazaDagilimi_Click);
                        gm.GridMenu.AddMenu("Mağaza Dağılımını Toplu Göster", MagazaDagilimiZegna_Click);
                        break;
                }
            }
            else if (ytk(122)) // Fevzi Bingöl, Özcan Çiçek, Tülay Tuncay, Emine Kavgacı
            {
                gm.GridMenu.AddMenu("Invoice", Invoice);
                gm.GridMenu.AddMenu("Kesim Föyü Önizleme", KesimFoyuOnizleme);
                gm.GridMenu.AddMenu("Dosya Kapama Raporu", DosyaKapama_Click);
                gm.GridMenu.AddMenu("Kesim Bilgi Formu", KesimBilgi_Click);
            }
            
            emptyEditor = new RepositoryItemButtonEdit();
            emptyEditor.Buttons.Clear();
            emptyEditor.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.HideTextEditor;
            gcMyTreeLines.RepositoryItems.Add(emptyEditor);
            
            gvOrders.EnableRowDelete();
            gvMyTreeLines.EnableRowDelete();

            gvMyTreeLines.GetManager().Pasting += BOM_Pasting;
            gm.Pasting += gm_Pasting;
            gvOrders.ShowingEditor += gvOrders_ShowingEditor;

            gvMyTreeLines.ShowingEditor += gvMyTreeLines_ShowingEditor;
            gvMyTreeLines.CustomRowCellEdit += gvMyTreeLines_CustomRowCellEdit;

            this.KeyPreview = true;
            this.KeyUp += Orders_KeyUp;

        }

        #endregion

        #region Yıkama testi sonuçları
        private void YikamaSonuclari(object sender, EventArgs e)
        {
            string Idxs = gvOrders.GetSelectedValues("idx");
            YikamaSonuclar ys = new YikamaSonuclar(Idxs,CustomerId);
            ys.ShowDialog();
        }
        #endregion

        #region Kesim föyü toplu önizleme
        private void KesimFoyuOnizlemeToplu(object sender, EventArgs e)
        {
            string idxs = gvOrders.GetSelectedValues("idx");

            if (idxs != String.Empty)
            {
                gvOrders.EndEditing();
                gvMyTreeLines.EndEditing();
                if (ds.HasChanges())
                    bbiSave.PerformClick();

                MyData.OrdersDataTable dtOrders = new MyData.OrdersDataTable();

                foreach (int rowHandle in gvOrders.GetSelectedRows())
                    if (rowHandle > -1)
                    {
                        int idx = gvOrders.GetRowCellValue(rowHandle, "idx").ToInt();
                        DataRow drOrder = ds.Orders.FindByidx(idx);
                        dtOrders.ImportRow(drOrder);
                    }              
               
                DataTable distinctModel = dtOrders.DefaultView.ToTable(true, "Model", "DosyaNo");
                foreach (DataRow drt in dtOrders.Rows)
                    if (drt["TotalComputed"].ToInt() == 0)
                    {
                        XtraMessageBox.Show("Sipariş adedi girin !", "Critical");
                        return;
                    }

                bool IsExistBosDagilim = dtOrders.Select("ISNULL(DagilimId,0) = 0").Length > 0;
                if (IsExistBosDagilim)
                {
                    XtraMessageBox.Show("Dağılım tipi boş olamaz. Lütfen seçtiğiniz satırları kontrol ediniz", "Critical");
                    return;
                }

                DataRow[] dr = dtOrders.Select("ISNULL(DosyaNo,'')<>''");
                if (dr.Length > 0 && dr.Length < dtOrders.Rows.Count)
                {
                    XtraMessageBox.Show("Aynı anda hem dosya alınmış hem de dosya alınmamış satırları seçemezsiniz !", "Critical");
                    return;
                }
                else if (dr.Length == 0)
                {
                    bool ExistEmptyModel = dtOrders.Select("Isnull(Model,'') = ''").Length > 0;
                    if (ExistEmptyModel)
                    {
                        XtraMessageBox.Show("Model bilgisi boş olamaz !", "Critical");
                        return;
                    }

                    int countTalepTipi = Convert.ToInt16(dtOrders.Compute("Count(TalepTipiId)", "TalepTipiId ='" + dtOrders.Rows[0]["TalepTipiId"] + "'"));
                    if (dtOrders.Rows.Count > countTalepTipi)
                    {
                        XtraMessageBox.Show("Farklı talep tipindeki siparişleri aynı anda seçemezsiniz !", "Critical");
                        return;
                    }

                    int yanlisBM = dtOrders.Select("TahminiBM>3").Length;
                    if (yanlisBM > 0)
                    {
                        XtraMessageBox.Show("Seçtiğiniz satırlarda yanlış girilmiş TAHMİNİ BİRİM METRAJLAR var.\n\nNot: Ana beden birim metrajını MT. cinsinden giriniz !", "Critical");
                        return;
                    }

                    int BosEn = dtOrders.Select("TopEni is null or (Product1Id is not null and Garni1En is null) or (Product2Id is not null and Garni2En is null)or (Product3Id is not null and Garni3En is null)or (Product4Id is not null and Garni4En is null)or (Product5Id is not null and Garni5En is null)or (Product6Id is not null and Garni6En is null)").Length;
                    if (BosEn > 0)
                    {
                        if (XtraMessageBox.Show("Seçtiğiniz satırlarda girilmemiş en bilgileri var. Yine de kesim föyü çıkarmak ister misiniz ?", "Critical", MessageBoxButtons.YesNo) == System.Windows.Forms.DialogResult.No)
                            return;
                    }
                }

                DataTable dta = ExecuteDataTable("GetGenericFoyKontrol", idxs, CustomerId);

                bool IsConflictExist = false;
                string Hata = "";

                foreach (DataRow drKontrol in distinctModel.Rows)
                {
                    string ModelKontrol = drKontrol["Model"].ToStr();
                    DataRow[] drModelKontrol = dta.Select("StyleName = '" + ModelKontrol + "'");

                    if (drModelKontrol.Length > 1)
                    {
                        IsConflictExist = true;
                        DataTable dtModelConflicted = drModelKontrol.CopyToDataTable();
                        List<string> caption = new List<string>();
                        foreach (DataColumn column in dtModelConflicted.Columns)
                        {
                            string ilkDeger = dtModelConflicted.Rows[0][column].ToStr();
                            foreach (DataRow dtr in dtModelConflicted.Rows)
                            {
                                if (dtr[column].ToStr().Trim() != ilkDeger.Trim())
                                {
                                    if (!caption.Contains(column.Caption))
                                        caption.Add(column.Caption);
                                }
                            }

                        }
                        Hata += ModelKontrol + ":\n";
                        for (int i = 0; i < caption.Count; i++)
                            Hata += caption[i].ToStr() + "\n";
                        Hata += "\n";
                    }
                }

                if (IsConflictExist)
                {
                    XtraMessageBox.Show("Seçtiğiniz modellerde farklı girilmiş bilgiler var!\n\n" + Hata + "", "Critical");
                    return;
                }

                string FoyTipi = ExecuteScalar("GetFoyTipi", CustomerId).ToStr();
                bool BasicFoy = FoyTipi == "Basit";

                XtraReport barcode;
                XtraReport barcode1;

                string Model = distinctModel.Rows[0]["Model"].ToStr();
                string DosyaNo = distinctModel.Rows[0]["DosyaNo"].ToStr();
                DataTable dtModel = dtOrders.Select("Model = '" + Model + "' and Isnull(DosyaNo,'') ='"+DosyaNo+"'").CopyToDataTable();
                string ModelNo = dtModel.Rows[0]["ModelNo"].ToStr();
                string ModelIdx = dtModel.GetValuesofSpecifiedColumn("idx", ",");

                if (!BasicFoy)
                    barcode = new xrKesimWestbrook(ModelIdx, "GetGenericFoy");
                else
                    barcode = new xrKaufKesimFoyu(ModelIdx);

                barcode.CreateDocument();
                barcode.PrintingSystem.ContinuousPageNumbering = false;

                for (int i = 1; i < distinctModel.Rows.Count; i++)
                {
                    Model = distinctModel.Rows[i]["Model"].ToStr();
                    DosyaNo = distinctModel.Rows[i]["DosyaNo"].ToStr();
                    dtModel = dtOrders.Select("Model = '" + Model + "' and Isnull(DosyaNo,'') ='" + DosyaNo + "'").CopyToDataTable();
                    ModelIdx = dtModel.GetValuesofSpecifiedColumn("idx", ",");


                    if (!BasicFoy)
                        barcode1 = new xrKesimWestbrook(ModelIdx, "GetGenericFoy");
                    else
                        barcode1 = new xrKaufKesimFoyu(ModelIdx);

                    barcode1.CreateDocument();
                    barcode.Pages.AddRange(barcode1.Pages);
                }
                barcode.ShowPreviewDialog();
            }
        }
        #endregion

        #region Toplu dosya numarası alma
        private void TopluDosyaNoAl(object sender, EventArgs e)
        {
            bool hasDosyaNo = false;
            bool isNumune = false;
            string idxs = gvOrders.GetSelectedValues("idx");

            if (idxs != String.Empty)
            {
                gvOrders.EndEditing();
                gvMyTreeLines.EndEditing();
                if (ds.HasChanges())
                    bbiSave.PerformClick();

                MyData.OrdersDataTable dtOrders = new MyData.OrdersDataTable();
                foreach (int rowHandle in gvOrders.GetSelectedRows())
                    if (rowHandle > -1)
                    {
                        int idx = gvOrders.GetRowCellValue(rowHandle, "idx").ToInt();
                        DataRow drOrder = ds.Orders.FindByidx(idx);
                        dtOrders.ImportRow(drOrder);
                    }              
               
                foreach (DataRow drt in dtOrders.Rows)
                    if (drt["TotalComputed"].ToInt() == 0)
                    {
                        XtraMessageBox.Show("Seçtiğiniz satırlarda adet girilmemiş satır(lar) var. Lütfen seçtiğiniz satırları kontrol ediniz", "Critical");
                        return;
                    }


                bool IsExistBosDagilim = dtOrders.Select("ISNULL(DagilimId,0) = 0").Length > 0;
                if (IsExistBosDagilim)
                {
                    XtraMessageBox.Show("Dağılım tipi boş olamaz. Lütfen seçtiğiniz satırları kontrol ediniz", "Critical");
                    return;
                }
                
                DataRow[] drBosTermin = dtOrders.Select("Termin is null");
                if (drBosTermin.Length > 0)
                {
                    ShowErrorMessage("Termin tarihi girmelisiniz");
                    return;
                }

                DataRow[] dr = dtOrders.Select("ISNULL(DosyaNo,'')<>''");
                if (dr.Length > 0 )
                {
                    XtraMessageBox.Show("Seçtiğiniz satırlarda dosya numarası alınmış satırlar var. Lütfen seçtiğiniz satırları kontrol ediniz", "Critical");
                    return;
                }                
                else if (dr.Length == 0)
                {
                    bool ExistEmptyModel = dtOrders.Select("Isnull(Model,'') = ''").Length > 0;
                    if (ExistEmptyModel)
                    {
                        XtraMessageBox.Show("Model bilgisi boş olamaz !", "Critical");
                        return;
                    }
                    
                    int countTalepTipi = Convert.ToInt16(dtOrders.Compute("Count(TalepTipiId)", "TalepTipiId ='" + dtOrders.Rows[0]["TalepTipiId"] + "'"));
                    if (dtOrders.Rows.Count > countTalepTipi)
                    {
                        XtraMessageBox.Show("Farklı talep tipindeki siparişleri aynı dosyada birleştiremezsiniz !", "Critical");
                        return;
                    }
                    
                    int yanlisBM = dtOrders.Select("TahminiBM>3").Length;
                    if (yanlisBM > 0)
                    {
                        XtraMessageBox.Show("Seçtiğiniz satırlarda yanlış girilmiş TAHMİNİ BİRİM METRAJLAR var.\n\nNot: Ana beden birim metrajını MT. cinsinden giriniz !", "Critical");
                        return;
                    }

                    int BosEn = dtOrders.Select("TopEni is null or (Product1Id is not null and Garni1En is null) or (Product2Id is not null and Garni2En is null)or (Product3Id is not null and Garni3En is null)or (Product4Id is not null and Garni4En is null)or (Product5Id is not null and Garni5En is null)or (Product6Id is not null and Garni6En is null)").Length;
                    if (BosEn > 0)
                    {
                        if (XtraMessageBox.Show("Seçtiğiniz satırlarda girilmemiş en bilgileri var. Yine de kesim föyü çıkarmak ister misiniz ?", "Critical", MessageBoxButtons.YesNo) == System.Windows.Forms.DialogResult.No)
                            return;
                    }
                    
                    DataTable dtYakaManset = ExecuteDataTable("CheckMansetYakaEmpty", idxs);
                    bool IsMansetYakaEmpty = dtYakaManset.Select("Isnull(Manset,'') = '' or Isnull(Yaka,'') =''").Length > 0;

                    if (IsMansetYakaEmpty)
                    {
                        XtraMessageBox.Show("Seçtiğiniz satırlarda eksik yaka/manşet bilgileri var. Lütfen Model Detayları ekranından yaka/manşet alanlarını doldurun", "Critical");
                        return;
                    }
                    
                    DataTable dta = ExecuteDataTable("GetGenericFoyKontrol", idxs, CustomerId);

                    DataTable distinctModel = dtOrders.DefaultView.ToTable(true, "Model");
                    bool IsConflictExist = false;
                    string Hata = "";

                    foreach (DataRow drKontrol in distinctModel.Rows)
                    {
                        string ModelKontrol = drKontrol["Model"].ToStr();
                        DataRow[] drModelKontrol = dta.Select("StyleName = '" + ModelKontrol + "'");

                        if (drModelKontrol.Length > 1)
                        {
                            IsConflictExist = true;
                            DataTable dtModelConflicted = drModelKontrol.CopyToDataTable();
                            List<string> caption = new List<string>();
                            foreach (DataColumn column in dtModelConflicted.Columns)
                            {
                                string ilkDeger = dtModelConflicted.Rows[0][column].ToStr();
                                foreach (DataRow dtr in dtModelConflicted.Rows)
                                {
                                    if (dtr[column].ToStr().Trim() != ilkDeger.Trim())
                                    {
                                        if (!caption.Contains(column.Caption))
                                            caption.Add(column.Caption);
                                    }
                                }

                            }
                            Hata += ModelKontrol + ":\n";
                            for (int i = 0; i < caption.Count; i++)
                                Hata += caption[i].ToStr() + "\n";
                            Hata += "\n";
                        }
                    }

                    if (IsConflictExist)
                    {
                        XtraMessageBox.Show("Seçtiğiniz modellerde farklı girilmiş bilgiler var!\n\n" + Hata + "", "Critical");
                        return;
                    }

                    using (DosyaBilgileri kdb = new DosyaBilgileri(idxs, dtOrders))
                        if (kdb.ShowDialog() == DialogResult.OK)
                        {
                            //Düğme ve ilik renklerini birleştirmek için
                            if (CustomerId == 17)
                            {
                                ExecuteNonQuery("UpdCogDugmeBilgileri", idxs);
                                Rfrsh();
                            }

                            string FoyTipi = ExecuteScalar("GetFoyTipi", CustomerId).ToStr();
                            bool BasicFoy = FoyTipi == "Basit";

                            XtraReport barcode;
                            XtraReport barcode1;


                            string Model = distinctModel.Rows[0]["Model"].ToStr();
                            DataTable dtModel = dtOrders.Select("Model = '" + Model + "'").CopyToDataTable();
                            string ModelNo = dtModel.Rows[0]["ModelNo"].ToStr();
                            string Kalip = dtModel.Rows[0]["Kalip"].ToStr();
                            string Aciklama = kdb.Notlar;
                            string Tip = kdb.DosyaTipi;
                            object AtelyeId = kdb.AtelyeId;
                            string ModelIdx = dtModel.GetValuesofSpecifiedColumn("idx", ",");
                            
                            isNumune = dtOrders.Select("TalepTipiId in (2,4)").Length > 0;

                            Session.DataManager.ExecuteDataSet("UpdKaufKesimNo",
                                                                ModelIdx,
                                                                Kalip,
                                                                Model,
                                                                ModelNo,
                                                                Aciklama,
                                                                WhoAmI,
                                                                Tip,
                                                                AtelyeId);

                            if (!BasicFoy)
                                barcode = new xrKesimWestbrook(ModelIdx, "GetGenericFoy");
                            else
                                barcode = new xrKaufKesimFoyu(ModelIdx);

                            barcode.CreateDocument();
                            barcode.PrintingSystem.ContinuousPageNumbering = false;
                            
                            for (int i = 1; i < distinctModel.Rows.Count; i++)
                            {
                                Model = distinctModel.Rows[i]["Model"].ToStr();
                                dtModel = dtOrders.Select("Model = '" + Model + "'").CopyToDataTable();
                                ModelNo = dtModel.Rows[0]["ModelNo"].ToStr();
                                Kalip = dtModel.Rows[0]["Kalip"].ToStr();
                                Aciklama = kdb.Notlar;
                                Tip = kdb.DosyaTipi;
                                AtelyeId = kdb.AtelyeId;
                                ModelIdx = dtModel.GetValuesofSpecifiedColumn("idx", ",");

                                Session.DataManager.ExecuteDataSet("UpdKaufKesimNo",
                                                                    ModelIdx,
                                                                    Kalip,
                                                                    Model,
                                                                    ModelNo,
                                                                    Aciklama,
                                                                    WhoAmI,
                                                                    Tip,
                                                                    AtelyeId);

                                if (!BasicFoy)
                                    barcode1 = new xrKesimWestbrook(ModelIdx, "GetGenericFoy");
                                else
                                    barcode1 = new xrKaufKesimFoyu(ModelIdx);

                                barcode1.CreateDocument();
                                barcode.Pages.AddRange(barcode1.Pages);
                            }
                            barcode.ShowPreviewDialog();                        
                            

                            if (!(hasDosyaNo || isNumune))
                            {
                                Model = distinctModel.Rows[0]["Model"].ToStr();
                                dtModel = dtOrders.Select("Model = '" + Model + "'").CopyToDataTable();
                                ModelIdx = dtModel.GetValuesofSpecifiedColumn("idx", ",");

                                xrKesimBilgiFormu Kesim1;
                                Rapor.Aksesuar.xrAksesuarFoyu AksesuarKartela1;

                                langIndex = beiDil.EditValue.ToInt();
                                Planlama.xrDosyaKapama DosyaKapamaRaporu = new Planlama.xrDosyaKapama(idxs, CustomerId, langIndex);

                                xrKesimBilgiFormu Kesim = new xrKesimBilgiFormu(ModelIdx, "GetOrdersKesimBilgiFormu");
                                Kesim.CreateDocument();
                                Kesim.PrintingSystem.ContinuousPageNumbering = false;

                                int BrandId = dtModel.Rows[0]["BrandId"].ToInt();
                                Rapor.Aksesuar.xrAksesuarFoyu AksesuarKartela = new Rapor.Aksesuar.xrAksesuarFoyu(ModelIdx, BrandId);
                                AksesuarKartela.CreateDocument();
                                AksesuarKartela.PrintingSystem.ContinuousPageNumbering = false;

                                for (int i = 1; i < distinctModel.Rows.Count; i++)
                                {
                                    Model = distinctModel.Rows[i]["Model"].ToStr();
                                    dtModel = dtOrders.Select("Model = '" + Model + "'").CopyToDataTable();
                                    ModelIdx = dtModel.GetValuesofSpecifiedColumn("idx", ",");


                                    Kesim1 = new xrKesimBilgiFormu(ModelIdx, "GetOrdersKesimBilgiFormu");
                                    Kesim1.CreateDocument();
                                    Kesim.Pages.AddRange(Kesim1.Pages);

                                    BrandId = dtModel.Rows[0]["BrandId"].ToInt();
                                    AksesuarKartela1 = new Rapor.Aksesuar.xrAksesuarFoyu(ModelIdx, BrandId);
                                    AksesuarKartela1.CreateDocument();
                                    AksesuarKartela.Pages.AddRange(AksesuarKartela1.Pages);
                                }

                                DosyaKapamaRaporu.ShowPreviewDialog();
                                Kesim.ShowPreviewDialog();
                                AksesuarKartela.ShowPreviewDialog();
                            }

                            GetDetails("Orders", "UpdatedKaufKesimNo", idxs);
                            CutOrder();
                        }
                }                
            }
        }
        #endregion

        #region Ürün ağacı kategoriye göre sabit adetler
        RepositoryItemButtonEdit emptyEditor;
        void gvMyTreeLines_CustomRowCellEdit(object sender, CustomRowCellEditEventArgs e)
        {
            GridView view = sender as GridView;
            if (e.Column.FieldName == "Seri" &&
                view.GetRowCellDisplayText(e.RowHandle, "AksSeriId") == string.Empty)
                e.RepositoryItem = emptyEditor;

            else if (e.Column.FieldName == "Qty")
            {
                DataTable dtZorunluAdet = ds.Tables["Table5"];
                int ProductCategoryId = view.GetRowCellValue(e.RowHandle, "ProductCategoryId").ToInt();
                bool IsProductCategoryExist = dtZorunluAdet.Select("ProductCategoryId = " + ProductCategoryId).Length > 0;
                if (IsProductCategoryExist)
                {
                    List<string> adet = new List<string>();
                    foreach (DataRow dr in dtZorunluAdet.Select("ProductCategoryId = " + ProductCategoryId))
                        adet.Add(dr["Qty"].ToDecimal().ToString("#,##0.###"));

                    RepositoryItemComboBox riAdet = new RepositoryItemComboBox();
                    riAdet.Items.AddRange(adet);
                    riAdet.TextEditStyle = TextEditStyles.DisableTextEditor;
                    e.RepositoryItem = riAdet;
                }
            }
        }

        void gvMyTreeLines_ShowingEditor(object sender, System.ComponentModel.CancelEventArgs e)
        {
            GridView view = sender as GridView;

            int AksesuarId = view.GetRowCellValue(view.FocusedRowHandle, "AksesuarId").ToInt();
            e.Cancel = view.FocusedColumn.FieldName == "Qty" && AksesuarId == 0;
        }

        void BOM_Pasting(int rowHandle, GridColumn column, object val, System.ComponentModel.CancelEventArgs ce)
        {
            if (rowHandle < 0)
                return;
            if (column.FieldName == "Qty" && val.ToStr() != "")
            {
                DataTable dtZorunluAdet = ds.Tables["Table5"];
                int ProductCategoryId = gvMyTreeLines.GetRowCellValue(rowHandle, "ProductCategoryId").ToInt();
                int AksesuarId = gvMyTreeLines.GetRowCellValue(rowHandle, "AksesuarId").ToInt();

                bool IsProductCategoryExist = dtZorunluAdet.Select("ProductCategoryId = " + ProductCategoryId).Length > 0;
                bool IsOptionExist = dtZorunluAdet.Select("ProductCategoryId = " + ProductCategoryId + " and Isnull(Qty,0) = " + val.ToStr().Replace(",", ".")).Length > 0;

                ce.Cancel = (IsProductCategoryExist && !IsOptionExist) || AksesuarId == 0;
            }
        }
        #endregion

        #region HF BOM Oluşturma
        private void CreateBOM(object sender, EventArgs e)
        {
            string idxs = gvOrders.GetSelectedValues("idx");
            using (HF_BOMOlustur hf = new HF_BOMOlustur(idxs))
                if (hf.ShowDialog() == DialogResult.OK)
                {
                    btnGetir_Click(null, null);
                }
        } 
        #endregion

        #region Kısayol tuşları
        void Orders_KeyUp(object sender, KeyEventArgs e)
        {
            if (e.Modifiers == Keys.Control && e.KeyCode == Keys.R)
            {
                btnGetir_Click(null, null);
                e.Handled = true;
            }
        } 
        #endregion

        #region Marka-Sezon-OrderRef sabitleme
        void gvOrders_ShowingEditor(object sender, System.ComponentModel.CancelEventArgs e)
        {
            string AksesuarCikisTalebiId = gvOrders.GetFocusedRowCellValue("AksesuarCikisTalebi").ToStr();
            e.Cancel = AksesuarCikisTalebiId != "" && (gvOrders.FocusedColumn.FieldName == "OrderRef" || gvOrders.FocusedColumn.FieldName == "BrandId" || gvOrders.FocusedColumn.FieldName == "SezonId");
        }

        void gm_Pasting(int rowHandle, GridColumn column, object val, System.ComponentModel.CancelEventArgs ce)
        {
            string AksesuarCikisTalebiId = gvOrders.GetRowCellValue(rowHandle, "AksesuarCikisTalebi").ToStr();
            ce.Cancel = AksesuarCikisTalebiId != "" && (column.FieldName == "OrderRef" || column.FieldName == "BrandId" || column.FieldName == "SezonId");
        } 
        #endregion

        #region Nakış kartelası
        private void NakisKartelasi_Click(object sender, EventArgs e)
        {
            string idxs = gvOrders.GetSelectedValues("idx");
            Rapor.xrNakisKartelasi xr = new Rapor.xrNakisKartelasi(idxs);
            xr.ShowPreview();
        } 
        #endregion

        #region Yıkama kartelası
        private void YikamaKartelasi_Click(object sender, EventArgs e)
        {
            string idxs = gvOrders.GetSelectedValues("idx");
            Rapor.xrYikamaKartelasi xr = new Rapor.xrYikamaKartelasi(idxs);
            xr.ShowPreview();
        } 
        #endregion

        #region Çıkış emri sil
        private void CikisEmriSil_Click(object sender, EventArgs e)
        {
            string idxs = gvOrders.GetSelectedValues("idx");
            GetDetails("Orders", "UpdOrdersCikisEmriSil", idxs);
            Notify(idxs + " satır(lar)ındaki çıkış emirleri silindi.");
        } 
        #endregion

        #region AKsesuar kartelası
        private void AksNumune(object sender, EventArgs e)
        {
            string idxs = gvOrders.GetSelectedValues("idx");
            DataRow[] dr = ds.Orders.Select("idx IN (" + idxs + ")");

            if (dr.Length > 0)
            {
                DataTable dtOrders = dr.CopyToDataTable();
                DataTable distinctModel = dtOrders.DefaultView.ToTable(true, "Model", "DosyaNo");

                string Model = distinctModel.Rows[0]["Model"].ToStr();
                string DosyaNo = distinctModel.Rows[0]["DosyaNo"].ToStr();
                DataTable dtModel = dtOrders.Select("Model = '" + Model + "' and Isnull(DosyaNo,'') ='" + DosyaNo + "'").CopyToDataTable();

           

                string ModelIdx = dtModel.GetValuesofSpecifiedColumn("idx", ",");

                int BrandId = dtModel.Rows[0]["BrandId"].ToInt();
                Rapor.Aksesuar.xrAksesuarFoyu AksesuarKartela = new Rapor.Aksesuar.xrAksesuarFoyu(ModelIdx, BrandId);
                AksesuarKartela.CreateDocument();
                AksesuarKartela.PrintingSystem.ContinuousPageNumbering = false;

                Rapor.Aksesuar.xrAksesuarFoyu AksesuarKartela1;

                for (int i = 1; i < distinctModel.Rows.Count; i++)
                {
                    Model = distinctModel.Rows[i]["Model"].ToStr();
                    DosyaNo = distinctModel.Rows[i]["DosyaNo"].ToStr();
                    dtModel = dtOrders.Select("Model = '" + Model + "' and Isnull(DosyaNo,'') ='" + DosyaNo + "'").CopyToDataTable();

                    ModelIdx = dtModel.GetValuesofSpecifiedColumn("idx", ",");

                    BrandId = dtModel.Rows[0]["BrandId"].ToInt();
                    AksesuarKartela1 = new Rapor.Aksesuar.xrAksesuarFoyu(ModelIdx, BrandId);
                    AksesuarKartela1.CreateDocument();
                    AksesuarKartela.Pages.AddRange(AksesuarKartela1.Pages);
                }

                AksesuarKartela.ShowPreviewDialog();
            }
        } 
        #endregion

        #region Dil seçeneği
        void beiDil_EditValueChanged(object sender, EventArgs e)
        {
            ChangeCulture(beiDil.EditValue.ToInt());
            ExecuteNonQuery("UpdCustomerCulture", CustomerId, WhoAmI, beiDil.EditValue.ToInt());
        }
        void ChangeCulture(int LangIndex)
        {
            Cursor.Current = Cursors.WaitCursor;
            string Culture;
            switch (LangIndex)
            {
                case 3: Culture = "EN"; break;
                case 2: Culture = "IT"; break;
                default: Culture = "TR"; break;
            }

            foreach (DataRow dr in dtCaptions.Rows)
            {
                string colName = dr["ColumnName"].ToString();

                if (gvOrders.Columns[colName] != null)
                    if (dr["Caption" + Culture] != null)
                        if (gvOrders.Columns[colName].Caption != dr["Caption" + Culture].ToString())
                            gvOrders.Columns[colName].Caption = dr["Caption" + Culture].ToString();
            }
            this.Cursor = Cursors.Default;
        } 
        #endregion

        #region Tela ihtiyacı
        private void TelaIhtiyaciCikar(object sender, EventArgs e)
        {
            gvOrders.CloseEditor();
            bsOrders.EndEdit();
            if (ds.HasChanges())
                bbiSave.PerformClick();

            string idxs = gvOrders.GetSelectedValues("idx");
            bool IsRequestable = true;

            DataRow[] drIdxs = ds.Orders.Select("idx IN (" + idxs + ")");
            DataTable dtIdxs = drIdxs.CopyToDataTable();

            int CountTelaCikisEmri = dtIdxs.Select("TelaCikisEmriId is not null").Length;
            if (CountTelaCikisEmri > 0)
            {
                if (XtraMessageBox.Show("Seçtiğiniz satırlarda tela çıkış emri oluşturulmuş satırlar var. Yine de tela ihtiyacını çıkarmak ister misiniz ?", "Critical", MessageBoxButtons.YesNo) == System.Windows.Forms.DialogResult.No)
                    return;
                IsRequestable = true;
            }

            int DosyaNoIsNull = dtIdxs.Select("DosyaNo is null").Length;
            if (DosyaNoIsNull > 0 && drIdxs.Length > 0)
            {
                ShowInfoMessage("Dosya numarası alınmamış satırları seçtiniz. Yalnızca tela ihtiyacını görebileceksiniz.");
                IsRequestable = false;
            }


            using (TelaIhtiyaci ok = new TelaIhtiyaci(idxs, CustomerId, "GetTelaIhtiyacFromOrders", IsRequestable))
                if (ok.ShowDialog() == DialogResult.OK)
                {
                    if (ok.TelaCikisEmriId > 0)
                    {
                        foreach (DataRow dr in ds.Orders.Select("idx IN (" + idxs + ")"))
                        {
                            string OncekiCikislar = dr["TelaCikisEmriId"].ToStr();
                            if (OncekiCikislar == "")
                                dr["TelaCikisEmriId"] = ok.TelaCikisEmriId;
                            else
                                dr["TelaCikisEmriId"] = OncekiCikislar + "," + ok.TelaCikisEmriId;
                        }
                    }
                    bbiSave.PerformClick();
                    Rfrsh();
                }
        } 
        #endregion

        #region Dağılım captionlarını setleme
        void gvOrders_FocusedRowChanged(object sender, DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventArgs e)
        {
            DagilimChanged();
        }

        private void DagilimChanged()
        {
            try
            {
                gvOrders.CloseEditor();
                gvOrders.BeginUpdate();
                if (DagilimId != gvOrders.GetRowCellValue(gvOrders.FocusedRowHandle, "DagilimId").ToInt(-1))
                {
                    DagilimId = gvOrders.GetRowCellValue(gvOrders.FocusedRowHandle, "DagilimId").ToInt(-1);

                    MyData.DagilimRow r = AppSession.Lookups.Dagilim.FindByDagilimId(DagilimId);
                    if (r != null)
                        for (int i = 1; i < 29; i++)
                        {
                            string fieldName = String.Format("A{0:00}", i);
                            string cap = r[String.Format("A{0:00}", i)].ToString();
                            gvOrders.Columns[fieldName].Caption = cap != string.Empty ? cap : " ";
                        }
                }

            }
            catch (Exception Ex)
            {
                throw Ex;
            }
            finally
            {
                gvOrders.EndUpdate();
            }
        } 
        #endregion

        #region Kumaş gelişleri
        private void BeklenenGelisler(object sender, EventArgs e)
        {
            int id = gvOrders.GetFocusedRowCellValue("ProductId").ToInt();
            if (id > 0)
                using (InTransit it = new InTransit(id))
                {
                    it.Text = "Beklenen Gelişler";
                    it.ShowDialog();
                }
        }

        private void BeklenenGelislerByDate(object sender, EventArgs e)
        {
            using (InTransitByDate it2 = new InTransitByDate(GetPOL()))
                it2.ShowDialog();
        }


        private string GetPOL()
        {
            string idxs = string.Empty;
            foreach (DataRow dr in ds.Orders.Rows)
                //foreach (DataRow dr in gvOrders.DataTable().Rows)
                idxs += dr["idx"].ToString() + ",";

            if (idxs.Substring(idxs.Length - 1, 1) == ",")
                idxs = idxs.Substring(0, idxs.Length - 1);
            return idxs;
        } 
        #endregion

        #region Dosya numarası iptal etme
        private void CancelKesimNo(object sender, EventArgs e)
        {
            string idxs = gvOrders.GetSelectedValues("idx");

            gvOrders.CloseEditor();
            bsOrders.EndEdit();
            if (ds.HasChanges())
            {
                bbiSave.PerformClick();
            }
            if (XtraMessageBox.Show("Seçtiğiniz satırların kesim numaraları iptal edilecek. Emin misiniz?", "Kritik!", MessageBoxButtons.YesNo) == System.Windows.Forms.DialogResult.No)
                return;
            GetDetails("Orders", "CancelKesimforKauf", idxs, CustomerId);
            CutOrder();
        } 
        #endregion

        #region Dosya kapama raporu
        int langIndex;
        private void DosyaKapama_Click(object sender, EventArgs e)
        {
            string idxs = gvOrders.GetSelectedValues("idx");
            DataRow[] dr = ds.Orders.Select("idx IN (" + idxs + ") and ISNULL(DosyaNo,'')=''");
            if (dr.Length > 0)
            {
                XtraMessageBox.Show("Seçtiğiniz satırlarda dosya numarası alınmamış satırlar var. Lütfen seçtiğiniz satırları kontrol ediniz", "Critical");
                return;
            }

            langIndex = beiDil.EditValue.ToInt();
            Planlama.xrDosyaKapama xr = new Planlama.xrDosyaKapama(idxs, CustomerId, langIndex);
            xr.ShowPreview();
        } 
        #endregion

        #region Renkle değişen aksesuarlar
        void RenkleDegisen(object sender, EventArgs e)
        {
            string idxs = gvOrders.GetSelectedValues("idx");
            using (AksSeriRenkleDegisen ua = new AksSeriRenkleDegisen(idxs, ""))
                if (ua.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                {
                    DataRow[] r = ds.KaufOrdersAksesuar.Select("idx in (" + idxs + ")", string.Empty);
                    for (int i = 0; i < r.Length; i++)
                        ds.KaufOrdersAksesuar.RemoveKaufOrdersAksesuarRow((MyData.KaufOrdersAksesuarRow)r[i]);

                    GetDetails("KaufOrdersAksesuar", "GetKaufOrdersAksesuar", idxs);
                }
        } 
        #endregion

        #region Cut order hesabı
        void CutOrder()
        {
            ds.KaufOrdersCut.Clear();

            if (CustomerId != 20)
                GetDetails("KaufOrdersCut", "GetKaufOrdersCut", CustomerId);
        } 
        #endregion

        #region Fatura girişi
        void Invoice(object sender, EventArgs e)
        {
            int idx = gvOrders.GetRowCellValue(gvOrders.FocusedRowHandle, "idx").ToInt(-1);
            using (KaufInvoice f = new KaufInvoice(idx, CustomerId))
            {
                f.ShowDialog();
            }
        } 
        #endregion

        #region Veriyi güncelle
        void btnGetir_Click(object sender, EventArgs e)
        {
            if (bbiSave.Visibility == BarItemVisibility.Always)
            {
                gvOrders.EndEditing();
                if (ds.HasChanges())
                    if (XtraMessageBox.Show("Değişiklikleri kaydetmek ister misiniz?", "Critical", MessageBoxButtons.YesNo) == System.Windows.Forms.DialogResult.Yes)
                        bbiSave.PerformClick();
            }
            Rfrsh();
        }

        private void Rfrsh()
        {
            ds.Clear();

            GetDetails("Orders;EmpCustomer;DagilimCustomer;KaufOrdersAksesuar", "GetKaufOrdersFiltered2", CustomerId,
                boolParse(GetVal("Aktif")),
                strParse(GetVal("Durum")),
                intParse(GetVal("BrandId")),
                strParse(GetVal("Sezon")),
                intParse(GetVal("CKBatchId")),
                intParse(GetVal("CikisPartisiId")),
                strParse(GetVal("OrderNr")),
                strParse(GetVal("Model")),
                strParse(GetVal("ModelNo")),
                strParse(GetVal("DosyaNo")),
                strParse(GetVal("KF")),
                intParse(GetVal("ProductId")),
                strParse(GetVal("ArticleColour")),
                strParse(GetVal("Fit")),
                strParse(GetVal("DugmeRengi")),
                strParse(GetVal("Notlar"))
                //datetimeParse(GetVal("BaslangicTarihi")),
                //datetimeParse(GetVal("BitisTarihi")),

                );

            gvOrders.BestFitColumns();
            gvMyTreeLines.BestFitColumns();
            //gvAksesuarGrup.BestFitColumns();

            Notify("Done.");
        } 
        #endregion

        #region Filter panel
        private void CreateVerticalGrid()
        {
            vgc.Rows.AddRange(new BaseRow[] {
                AddItem("Aktif", typeof(bool)),
                AddItem("Durum", typeof(string)),
                AddItem("BrandId", typeof(int), RI(Rp.Brand)),
                AddItem("Sezon", typeof(string)),
                AddItem("CKBatchId", typeof(int), RI(Rp.CKBatch)),
                AddItem("CikisPartisiId", typeof(int)),
                AddItem("OrderNr", typeof(string)),
                AddItem("Model", typeof(string)),
                AddItem("ModelNo", typeof(string)),
                AddItem("DosyaNo", typeof(string)),
                AddItem("KF", typeof(string)),
                AddItem("ProductId", typeof(int), RI(Rp.V_Kumas)),
                AddItem("ArticleColour", typeof(string)),
                AddItem("Fit", typeof(string)),
                AddItem("DugmeRengi", typeof(string)),
                AddItem("Notlar", typeof(string))
            });

            vgc.Rows.GetRowByFieldName("Notlar", true).Height = 60;

            vgc.OptionsBehavior.UseEnterAsTab = true;
            vgc.LayoutStyle = DevExpress.XtraVerticalGrid.LayoutViewStyle.SingleRecordView;
            vgc.CustomDrawRowHeaderCell += new CustomDrawRowHeaderCellEventHandler(vgc_CustomDrawRowHeaderCell);
            vgc.Appearance.RowHeaderPanel.BackColor = Color.LightBlue;

            vgc.SetCellValue(vgc.Rows["Aktif"], 0, true);
            vgc.FocusedRow = vgc.Rows["Durum"];
            vgc.BestFit();
        }

        public BaseRow AddItem(string name, Type t, params RepositoryItem[] ri)
        {
            return AddItem(vgc, name, t, ri);
        } 

        object GetVal(string FieldName)
        {
            return vgc.GetCellValue(vgc.Rows[FieldName], vgc.FocusedRecord);
        }

        void btnTemizle_Click(object sender, EventArgs e)
        {
            foreach (BaseRow r in vgc.Rows)
                vgc.SetCellValue(r, 0, null);
        }
        #endregion

        #region Mağaza dağılımı CC
        private void MagazaDagilimi_Click(object sender, EventArgs e)
        {
            idx = bsOrders.GetCurrentValue("idx").ToInt();
            int dagilimId = bsOrders.GetCurrentValue("DagilimId").ToInt(-1);
            if (idx > 0)
            {
                using (MagazaDagilimi md = new MagazaDagilimi(idx, dagilimId))
                {
                    if (md.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                    {
                        ds.Orders.Merge(md.Orders);
                    }
                }
            }
        } 
        #endregion

        #region Yabancı etiket ekle
        private void YabanciEtiket_Click(object sender, EventArgs e)
        {

            idx = bsOrders.GetCurrentValue("idx").ToInt(-1);
            ConfExpert.Datasets.MyData.OrdersRow row = (ConfExpert.Datasets.MyData.OrdersRow)((DataRowView)bsOrders.Current).Row;

            using (FoyFarkliEtiket sp = new FoyFarkliEtiket(idx))
            {
                if (sp.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                    bbiSave.PerformClick();
            }

        } 
        #endregion

        #region Satır parçala
        bool parcala = false;
        int idx = -1;
        string strUpdate = "";
        private void SatirParcala_Click(object sender, EventArgs e)
        {
            idx = bsOrders.GetCurrentValue("idx").ToInt(-1);
            ConfExpert.Datasets.MyData.OrdersRow row = (ConfExpert.Datasets.MyData.OrdersRow)((DataRowView)bsOrders.Current).Row;

            using (SatirParcala sp = new SatirParcala(row))
            {
                if (sp.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                {
                    strUpdate = sp.UpdateString;
                    parcala = true;
                    bbiSave.PerformClick();
                }
            }
        } 
        #endregion        

        #region Satır çoğalt
        bool cogalt = false;
        int idx2 = -1;
        string strInsert = "";
        
        private void SatirCogalt_Click(object sender, EventArgs e)
        {
            idx2 = bsOrders.GetCurrentValue("idx").ToInt(-1);
            ConfExpert.Datasets.MyData.OrdersRow row = (ConfExpert.Datasets.MyData.OrdersRow)((DataRowView)bsOrders.Current).Row;

            using (SatirCogalt sc = new SatirCogalt(row))
            {
                if (sc.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                {
                    strInsert = sc.InsertString;
                    cogalt = true;
                    bbiSave.PerformClick();
                }
            }
        }
        #endregion  

        #region Stok durumu
        private void StokDurumu_Click(object sender, EventArgs e)
        {
            string idxs = gvOrders.GetSelectedValues("idx");

            if (idxs != String.Empty)
                AppSession.MainForm.ShowMdiChildForm(typeof(Tuketim), idxs, CustomerId);
            //using (Tuketim tk = new Tuketim(idxs, CustomerId))
            //    {
            //        tk.ShowDialog();
            //    }
        } 
        #endregion

        #region Sütunları düzenle
        private void SutunlariDuzenle_Click(object sender, EventArgs e)
        {
            using (GM_Init2 gm = new GM_Init2(CustomerId))
                gm.ShowDialog();
        } 
        #endregion

        #region Kumaş ihtiyacı
        private void KumasIhtiyaci(object sender, EventArgs e)
        {
            gvOrders.EndEditing();
            if (ds.HasChanges())
                bbiSave.PerformClick();

            string idxs = gvOrders.GetSelectedValues("idx");
            bool IsRequestable = true;

            DataRow[] drIdxs = ds.Orders.Select("idx IN (" + idxs + ")");
            DataTable dtIdxs = drIdxs.CopyToDataTable();

            int CountKumasCikisEmri = dtIdxs.Select("KumasCikisEmriId is not null").Length;
            if (CountKumasCikisEmri > 0)
            {
                if (XtraMessageBox.Show("Seçtiğiniz satırlarda kumaş çıkış emri oluşturulmuş satırlar var. Yine de kumaş ihtiyacını çıkarmak ister misiniz ?", "Critical", MessageBoxButtons.YesNo) == System.Windows.Forms.DialogResult.No)
                    return;
                IsRequestable = true;
            }

            int DosyaNoIsNull = dtIdxs.Select("DosyaNo is null").Length;
            if (DosyaNoIsNull > 0 && drIdxs.Length > 0)
            {
                ShowInfoMessage("Dosya numarası alınmamış satırları seçtiniz. Yalnızca kumaş ihtiyacını görebileceksiniz.");
                IsRequestable = false;
            }

            using (OrtakKumas ok = new OrtakKumas(idxs, CustomerId, "GetOrtakKumasFromOrders", IsRequestable))
                if (ok.ShowDialog() == DialogResult.OK)
                {
                    if (ok.CikisEmriId > 0)
                    {
                        foreach (DataRow dr in ds.Orders.Select("idx IN (" + idxs + ")"))
                        {
                            string OncekiCikislar = dr["KumasCikisEmriId"].ToStr();
                            if (OncekiCikislar == "")
                                dr["KumasCikisEmriId"] = ok.CikisEmriId;
                            else
                                dr["KumasCikisEmriId"] = OncekiCikislar + "," + ok.CikisEmriId;
                        }
                    }
                    bbiSave.PerformClick();
                    Rfrsh();
                }
        } 
        #endregion

        #region Aksesuar Çıkış oluşturma
        private void AksesuarIhtiyaci(object sender, EventArgs e)
        {
            string idxs = gvOrders.GetSelectedValues("idx");
            bool IsRequestable = true;

            DataRow[] drIdxs = ds.Orders.Select("idx IN (" + idxs + ")");
            DataTable dtIdxs = drIdxs.CopyToDataTable();

            int AyrimId = dtIdxs.Rows[0]["AyrimId"].ToInt();
            int BrandId = dtIdxs.Rows[0]["BrandId"].ToInt();
            int SezonId = dtIdxs.Rows[0]["SezonId"].ToInt();
            string OrderRef = dtIdxs.Rows[0]["OrderRef"].ToString();
            string DosyaNo = dtIdxs.Rows[0]["DosyaNo"].ToStr();
                        
            DataSet dsError = ExecuteDataSet("KontrolPrdTree", idxs, CustomerId);

            int CountModel = dsError.Tables["Table"].Rows.Count;
            if (CountModel > 0)
            {
                string Error = CountModel == 1 ? "Aşağıdaki modele ürün ağacı tanımlayın \n\n" : "Aşağıdaki modellere ürün ağacı tanımlayın \n\n";
                foreach (DataRow drModel in dsError.Tables["Table"].Rows)
                {
                    Error += drModel["Model"].ToStr() + " \n";
                }

                Error = Error.RemoveIfEndsWith("\n");
                ShowErrorMessage(Error);
                return;
            }

            if (dsError.Tables["Table1"].Select("Error is not null").Length > 0)
            {
                string Error = "";
                foreach (DataRow drModel in dsError.Tables["Table1"].Select("Error is not null"))
                {
                    Error += drModel["Error"].ToStr() + " \n";
                }

                Error = Error.RemoveIfEndsWith("\n");
                if (XtraMessageBox.Show(Error + "Yine de aksesuar ihtiyacını çıkarmak ister misiniz ?", "Critical", MessageBoxButtons.YesNo) == System.Windows.Forms.DialogResult.No)
                    return;
            }

            if (dsError.Tables["Table7"].Rows.Count > 0)
            {
                string Error = "";
                foreach (DataRow drModel in dsError.Tables["Table7"].Rows)
                {
                    Error += drModel["Error"].ToStr() + " \n";
                }

                Error = Error.RemoveIfEndsWith("\n");
                ShowErrorMessage(Error);
                return;
            }

            if (dsError.Tables["Table2"].Rows.Count > 0)
            {
                string Error = "";
                foreach (DataRow drModel in dsError.Tables["Table2"].Rows)
                {
                    Error += drModel["Error"].ToStr() + " \n";
                }

                Error = Error.RemoveIfEndsWith("\n");
                ShowErrorMessage(Error);
                return;
            }

            if (dsError.Tables["Table3"].Rows.Count > 0)
            {
                string Error = "";
                foreach (DataRow drModel in dsError.Tables["Table3"].Rows)
                {
                    Error += drModel["Model"] + " modelinin aksesuar serisinde  " + drModel["Beden"].ToStr() + " beden(ler)i için aksesuar tanıtılmamış  \n";
                }

                if (XtraMessageBox.Show(Error + "Yine de aksesuar ihtiyacını çıkarmak ister misiniz ?", "Critical", MessageBoxButtons.YesNo) == System.Windows.Forms.DialogResult.No)
                    return;
            }

            if (dsError.Tables["Table5"].Rows.Count > 0)
            {
                string BoyamaRengiEksik = "Aşağıdaki satırlarda DÜĞME BOYAMA işaretlenmiş. Lütfen DÜĞME BOYAMA RENGİ alanına boyama rengini girin ! \n\n";
                foreach (DataRow drModel in dsError.Tables["Table5"].Rows)
                {
                    BoyamaRengiEksik += drModel["idx"] + "\n";
                }

                XtraMessageBox.Show(BoyamaRengiEksik, "Critical");
                return;
            }

            if (dsError.Tables["Table6"].Rows.Count > 0)
            {
                string MukerrerAksesuar = "Dikkat : Aşağıdaki aksesuarlar hem ürün ağacında hem de renkle değişen aksesuarlarda tanımlanmış ! \n\n";
                foreach (DataRow drModel in dsError.Tables["Table6"].Rows)
                {
                    MukerrerAksesuar += "Model : " + drModel["Model"] + " - Stok Kod :" + drModel["StokKod"].ToStr() + " \n";
                }

                if (XtraMessageBox.Show(MukerrerAksesuar + "\nYine de aksesuar ihtiyacını çıkarmak ister misiniz ?", "Critical", MessageBoxButtons.YesNo) == System.Windows.Forms.DialogResult.No)
                    return;
            }

            int CountDosya = Convert.ToInt16(dtIdxs.Compute("Count(DosyaNo)", "DosyaNo ='" + DosyaNo + "'"));
            int CountAksesuarCikisTalebi = dtIdxs.Select("AksesuarCikisTalebi is not null").Length;

            if (CountAksesuarCikisTalebi > 0)
            {
                ShowErrorMessage("Seçtiğiniz satırlarda aksesuar çıkış talebi oluşturulmuş satırlar var. Yalnızca aksesuar ihtiyacını görebileceksiniz");
                IsRequestable = false;
            }
            else if (dtIdxs.Rows.Count > CountDosya)
            {
                string Hata;
                if (DosyaNo == "")
                    Hata = "Seçtiğiniz satırlarda dosya numarası alınmamış satırlar var. Yalnızca aksesuar ihtiyacını görebileceksiniz. \n\nUyarı : Aksesuar çıkış talebi oluşturmak için dosya numarası alın!";
                else
                    Hata = "Farklı dosya numaralarına ait satırları seçtiniz. Yalnızca aksesuar ihtiyacını görebileceksiniz. \n\nUyarı : Aksesuar çıkış talebi oluşturmak için aynı dosya numarasına ait satırları seçin !";
                XtraMessageBox.Show(Hata, "Critical");
                IsRequestable = false;
            }
            else
            {
                bool BosAyrim = dtIdxs.Select("Isnull(OrderRef,'') = '' ").Length > 0;
                if (BosAyrim)
                {
                    ShowErrorMessage("Lütfen OrderRef alanını boş bırakmayın !");
                    return;
                }

                bool FarkliAyrim = dtIdxs.Select("Isnull(AyrimId,0) <> " + AyrimId).Length > 0;
                if (FarkliAyrim)
                {
                    ShowErrorMessage("Farklı siparişe ait satırları aynı çıkış emrinde seçemezsiniz!");
                    return;
                }
            }

            bool IsNumune = false;

            //TODO K.A : Bekir Bey numunelerde de satınalma geçilsin istiyor. Eğer ilerde satınalma geçilmesin istenirse alttaki kodu aç.
            /*
            DataRow[] drDosyaNo = dtIdxs.Select("Isnull(DosyaNo,'') <> ''");

            if (drDosyaNo.Length == 0)
            {
                DataRow[] drUretimTipi = dtIdxs.Select("Isnull(TalepTipiId,0) in (0,1)");
                IsNumune = !(drUretimTipi.Length > 0);
            }
            else
            {
                IsNumune = dtIdxs.Select("Isnull(DosyaNo,'') = '' or Isnull(DosyaNo,'') like 'F%' or Isnull(DosyaNo,'') like 'K%'").Length == 0;
            }
            */
            using (AksesuarIhtiyaci ai = new AksesuarIhtiyaci(idxs, IsRequestable, BrandId, SezonId, OrderRef, IsNumune, "createAksesuarTalepforOrders"))
                if (ai.ShowDialog() == DialogResult.OK)
                {
                    if (ai.AksesuarCikisTalebiId != "")
                    {
                        foreach (DataRow dr in ds.Orders.Select("idx IN (" + idxs + ")"))
                        {
                            dr["AksesuarCikisTalebi"] = ai.AksesuarCikisTalebiId;
                        }
                    }
                    bbiSave.PerformClick();

                    if (DosyaNo.Substring(0, 1) == "N")
                    {
                        Rapor.Aksesuar.xrYikamaTalimati foy = new Rapor.Aksesuar.xrYikamaTalimati(DosyaNo);
                        System.IO.MemoryStream ms = new System.IO.MemoryStream();
                        foy.ExportToXls(ms);
                        byte[] foyPdf = ms.ToArray();

                        string To = "";
                        string Cc = "";
                        string FileName = DosyaNo + ".xls";
                        string Subject = "Numune Föyü Yıkama Talimatı";
                        string Body = DosyaNo + " dosyasının barkod bilgileri ekteki dosyadadır.";

                        DataRow[] drTO = AppSession.Lookups.V_User.Select("Unvan = 'Etiket ve Barkod Basım Elemanı'");

                        if (drTO.Length > 0)
                        {
                            foreach (DataRow dr in drTO)
                            {
                                if (dr["Email"].ToStr() != "")
                                    To += dr["Email"].ToStr() + ",";
                            }
                            To = To.RemoveIfEndsWith(",");

                            if (!isProduction)
                            {
                                To = "kadirakis@gmail.com";
                            }
                            Mail.Send(To, Subject, Body, Cc, foyPdf, FileName, "");
                        }

                    }
                    Rfrsh();
                }
        }
        #endregion

        #region Aksesuar Toplu Çıkış oluşturma
        private void AksesuarIhtiyaciToplu(object sender, EventArgs e)
        {
            string idxs = gvOrders.GetSelectedValues("idx");
            bool IsRequestable = true;

            DataRow[] drIdxs = ds.Orders.Select("idx IN (" + idxs + ")");
            DataTable dtOrders = drIdxs.CopyToDataTable();

            int AyrimId = dtOrders.Rows[0]["AyrimId"].ToInt();
            int BrandId = dtOrders.Rows[0]["BrandId"].ToInt();
            int SezonId = dtOrders.Rows[0]["SezonId"].ToInt();
            string OrderRef = dtOrders.Rows[0]["OrderRef"].ToString();

            DataSet dsError = ExecuteDataSet("KontrolPrdTree", idxs, CustomerId);

            int CountModel = dsError.Tables["Table"].Rows.Count;
            if (CountModel > 0)
            {
                string Error = CountModel == 1 ? "Aşağıdaki modele ürün ağacı tanımlayın \n\n" : "Aşağıdaki modellere ürün ağacı tanımlayın \n\n";
                foreach (DataRow drModel in dsError.Tables["Table"].Rows)
                {
                    Error += drModel["Model"].ToStr() + " \n";
                }

                Error = Error.RemoveIfEndsWith("\n");
                ShowErrorMessage(Error);
                return;
            }

            if (dsError.Tables["Table1"].Select("Error is not null").Length > 0)
            {
                string Error = "";
                foreach (DataRow drModel in dsError.Tables["Table1"].Select("Error is not null"))
                {
                    Error += drModel["Error"].ToStr() + " \n";
                }

                Error = Error.RemoveIfEndsWith("\n");
                if (XtraMessageBox.Show(Error + "Yine de aksesuar ihtiyacını çıkarmak ister misiniz ?", "Critical", MessageBoxButtons.YesNo) == System.Windows.Forms.DialogResult.No)
                    return;
            }

            if (dsError.Tables["Table7"].Rows.Count > 0)
            {
                string Error = "";
                foreach (DataRow drModel in dsError.Tables["Table7"].Rows)
                {
                    Error += drModel["Error"].ToStr() + " \n";
                }

                Error = Error.RemoveIfEndsWith("\n");
                ShowErrorMessage(Error);
                return;
            }

            if (dsError.Tables["Table2"].Rows.Count > 0)
            {
                string Error = "";
                foreach (DataRow drModel in dsError.Tables["Table2"].Rows)
                {
                    Error += drModel["Error"].ToStr() + " \n";
                }

                Error = Error.RemoveIfEndsWith("\n");
                ShowErrorMessage(Error);
                return;
            }

            if (dsError.Tables["Table3"].Rows.Count > 0)
            {
                string Error = "";
                foreach (DataRow drModel in dsError.Tables["Table3"].Rows)
                {
                    Error += drModel["Model"] + " modelinin aksesuar serisinde  " + drModel["Beden"].ToStr() + " beden(ler)i için aksesuar tanıtılmamış  \n";
                }

                if (XtraMessageBox.Show(Error + "Yine de aksesuar ihtiyacını çıkarmak ister misiniz ?", "Critical", MessageBoxButtons.YesNo) == System.Windows.Forms.DialogResult.No)
                    return;
            }

            if (dsError.Tables["Table5"].Rows.Count > 0)
            {
                string BoyamaRengiEksik = "Aşağıdaki satırlarda DÜĞME BOYAMA işaretlenmiş. Lütfen DÜĞME BOYAMA RENGİ alanına boyama rengini girin ! \n\n";
                foreach (DataRow drModel in dsError.Tables["Table5"].Rows)
                {
                    BoyamaRengiEksik += drModel["idx"] + "\n";
                }

                XtraMessageBox.Show(BoyamaRengiEksik, "Critical");
                return;
            }

            if (dsError.Tables["Table6"].Rows.Count > 0)
            {
                string MukerrerAksesuar = "Dikkat : Aşağıdaki aksesuarlar hem ürün ağacında hem de renkle değişen aksesuarlarda tanımlanmış ! \n\n";
                foreach (DataRow drModel in dsError.Tables["Table6"].Rows)
                {
                    MukerrerAksesuar += "Model : " + drModel["Model"] + " - Stok Kod :" + drModel["StokKod"].ToStr() + " \n";
                }

                if (XtraMessageBox.Show(MukerrerAksesuar + "\nYine de aksesuar ihtiyacını çıkarmak ister misiniz ?", "Critical", MessageBoxButtons.YesNo) == System.Windows.Forms.DialogResult.No)
                    return;
            }

            int DosyaNoAlinmamis = dtOrders.Select("Isnull(DosyaNo,'') =''").Length;
            int CountAksesuarCikisTalebi = dtOrders.Select("AksesuarCikisTalebi is not null").Length;

            if (CountAksesuarCikisTalebi > 0)
            {
                ShowErrorMessage("Seçtiğiniz satırlarda aksesuar çıkış talebi oluşturulmuş satırlar var. Yalnızca aksesuar ihtiyacını görebileceksiniz");
                IsRequestable = false;
            }
            else if (DosyaNoAlinmamis > 0)
            {
                ShowErrorMessage("Seçtiğiniz satırlarda dosya numarası alınmamış satırlar var. Yalnızca aksesuar ihtiyacını görebileceksiniz. \n\nUyarı : Aksesuar çıkış talebi oluşturmak için dosya numarası alın!");
                IsRequestable = false;
            }
            else
            {
                bool BosAyrim = dtOrders.Select("Isnull(OrderRef,'') = '' ").Length > 0;
                if (BosAyrim)
                {
                    ShowErrorMessage("Lütfen OrderRef alanını boş bırakmayın !");
                    return;
                }

                bool FarkliAyrim = dtOrders.Select("Isnull(AyrimId,0) <> " + AyrimId).Length > 0;
                if (FarkliAyrim)
                {
                    ShowErrorMessage("Farklı siparişe ait satırları aynı çıkış emrinde seçemezsiniz!");
                    return;
                }
            }

            bool IsNumune = false;

            //TODO K.A : Bekir Bey numunelerde de satınalma geçilsin istiyor. Eğer ilerde satınalma geçilmesin istenirse alttaki kodu aç.
            /*
            DataRow[] drDosyaNo = dtIdxs.Select("Isnull(DosyaNo,'') <> ''");

            if (drDosyaNo.Length == 0)
            {
                DataRow[] drUretimTipi = dtIdxs.Select("Isnull(TalepTipiId,0) in (0,1)");
                IsNumune = !(drUretimTipi.Length > 0);
            }
            else
            {
                IsNumune = dtIdxs.Select("Isnull(DosyaNo,'') = '' or Isnull(DosyaNo,'') like 'F%' or Isnull(DosyaNo,'') like 'K%'").Length == 0;
            }
            */

            using (AksesuarIhtiyaciCoklu ai = new AksesuarIhtiyaciCoklu(dtOrders,idxs, IsRequestable, BrandId, SezonId, OrderRef, IsNumune, "createAksesuarTalepforOrders"))
                if (ai.ShowDialog() == DialogResult.OK)
                {
                    DataRow[] drAksesuarCikisTalepleri = ai.distinctDosya.Select("AksesuarCikisTalebiId is not null");
                    if (drAksesuarCikisTalepleri.Length > 0)
                    {
                        foreach (DataRow drAksesuarCikisTalebiId in drAksesuarCikisTalepleri)
                        {
                            string DosyaNo = drAksesuarCikisTalebiId["DosyaNo"].ToStr();
                            string AksesuarCikisTalebiId = drAksesuarCikisTalebiId["AksesuarCikisTalebiId"].ToStr();

                            foreach (DataRow dr in ds.Orders.Select("Isnull(DosyaNo,'') = '" + DosyaNo + "'"))                            
                                dr["AksesuarCikisTalebi"] = AksesuarCikisTalebiId;

                        }
                        bbiSave.PerformClick();

                        foreach (DataRow drAksesuarCikisTalebiId in drAksesuarCikisTalepleri)
                        {
                            string DosyaNo = drAksesuarCikisTalebiId["DosyaNo"].ToStr();

                            if (DosyaNo.Substring(0, 1) == "N")
                            {
                                Rapor.Aksesuar.xrYikamaTalimati foy = new Rapor.Aksesuar.xrYikamaTalimati(DosyaNo);
                                System.IO.MemoryStream ms = new System.IO.MemoryStream();
                                foy.ExportToXls(ms);
                                byte[] foyPdf = ms.ToArray();

                                string To = "";
                                string Cc = "";
                                string FileName = DosyaNo + ".xls";
                                string Subject = "Numune Föyü Yıkama Talimatı";
                                string Body = DosyaNo + " dosyasının barkod bilgileri ekteki dosyadadır.";

                                DataRow[] drTO = AppSession.Lookups.V_User.Select("Unvan = 'Etiket ve Barkod Basım Elemanı'");
                                if (drTO.Length > 0)
                                {
                                    foreach (DataRow dr in drTO)
                                    {
                                        if (dr["Email"].ToStr() != "")
                                            To += dr["Email"].ToStr() + ",";
                                    }
                                    To = To.RemoveIfEndsWith(",");

                                    if (!isProduction)
                                    {
                                        To = "kadirakis@gmail.com";
                                    }
                                    Mail.Send(To, Subject, Body, Cc, foyPdf, FileName, "");
                                }
                            }
                        }
                    }                    
                    Rfrsh();
                }
        }
        #endregion

        #region Kumaş Eni seç
        private void KumasEni_Click(object sender, EventArgs e)
        {
            string idxs = gvOrders.GetSelectedValues("idx");
            string productIds = GetProductIds();

            using (KumasEniSec kes = new KumasEniSec(productIds, CustomerId))
                if (kes.ShowDialog() == DialogResult.OK)
                {
                    DataTable dtEn = kes.dtEn;

                    foreach (DataRow dr in ds.Orders.Select("idx IN (" + idxs + ")"))
                    {
                        int productId = dr["ProductId"].ToInt(-1);
                        int product1Id = dr["Product1Id"].ToInt(-1);
                        int product2Id = dr["Product2Id"].ToInt(-1);
                        int product3Id = dr["Product3Id"].ToInt(-1);
                        int product4Id = dr["Product4Id"].ToInt(-1);
                        int product5Id = dr["Product5Id"].ToInt(-1);
                        int product6Id = dr["Product6Id"].ToInt(-1);

                        if (productId > 0)
                        {
                            if (dtEn.Select("ProductId=" + productId.ToString()).Length > 0)
                            {
                                decimal kumasEn = dtEn.Select("ProductId=" + productId.ToString())[0]["En"].ToDecimal(-1);
                                dr["TopEni"] = kumasEn;
                            }
                        }
                        if (product1Id > 0)
                        {
                            if (dtEn.Select("ProductId=" + product1Id.ToString()).Length > 0)
                            {
                                decimal kumasEn = dtEn.Select("ProductId=" + product1Id.ToString())[0]["En"].ToDecimal(-1);
                                dr["Garni1En"] = kumasEn;
                            }
                        }
                        if (product2Id > 0)
                        {
                            if (dtEn.Select("ProductId=" + product2Id.ToString()).Length > 0)
                            {
                                decimal kumasEn = dtEn.Select("ProductId=" + product2Id.ToString())[0]["En"].ToDecimal(-1);
                                dr["Garni2En"] = kumasEn;
                            }
                        }
                        if (product3Id > 0)
                        {
                            if (dtEn.Select("ProductId=" + product3Id.ToString()).Length > 0)
                            {
                                decimal kumasEn = dtEn.Select("ProductId=" + product3Id.ToString())[0]["En"].ToDecimal(-1);
                                dr["Garni3En"] = kumasEn;
                            }
                        }
                        if (product4Id > 0)
                        {
                            if (dtEn.Select("ProductId=" + product4Id.ToString()).Length > 0)
                            {
                                decimal kumasEn = dtEn.Select("ProductId=" + product4Id.ToString())[0]["En"].ToDecimal(-1);
                                dr["Garni4En"] = kumasEn;
                            }
                        }
                        if (product5Id > 0)
                        {
                            if (dtEn.Select("ProductId=" + product5Id.ToString()).Length > 0)
                            {
                                decimal kumasEn = dtEn.Select("ProductId=" + product5Id.ToString())[0]["En"].ToDecimal(-1);
                                dr["Garni5En"] = kumasEn;
                            }
                        }
                        if (product6Id > 0)
                        {
                            if (dtEn.Select("ProductId=" + product6Id.ToString()).Length > 0)
                            {
                                decimal kumasEn = dtEn.Select("ProductId=" + product6Id.ToString())[0]["En"].ToDecimal(-1);
                                dr["Garni6En"] = kumasEn;
                            }
                        }
                    }
                    bbiSave.PerformClick();
                }
        }
        private string GetProductIds()
        {
            string ids = "";
            foreach (int rowHandle in gvOrders.GetSelectedRows())
            {
                if (rowHandle > -1)
                {
                    string pId = gvOrders.GetRowCellValue(rowHandle, "ProductId").ToString();
                    string p1Id = gvOrders.GetRowCellValue(rowHandle, "Product1Id").ToString();
                    string p2Id = gvOrders.GetRowCellValue(rowHandle, "Product2Id").ToString();
                    string p3Id = gvOrders.GetRowCellValue(rowHandle, "Product3Id").ToString();
                    string p4Id = gvOrders.GetRowCellValue(rowHandle, "Product4Id").ToString();
                    string p5Id = gvOrders.GetRowCellValue(rowHandle, "Product5Id").ToString();
                    string p6Id = gvOrders.GetRowCellValue(rowHandle, "Product6Id").ToString();

                    if (pId != "")
                        ids += pId + ",";

                    if (p1Id != "")
                        ids += p1Id + ",";

                    if (p2Id != "")
                        ids += p2Id + ",";

                    if (p3Id != "")
                        ids += p3Id + ",";

                    if (p4Id != "")
                        ids += p4Id + ",";

                    if (p5Id != "")
                        ids += p5Id + ",";
                }
            }

            ids = ids.RemoveIfEndsWith(",");

            return ids;
        }
        #endregion

        #region Birim Metraj iste
        public void ModelhanedenBirimMetrajIste(object sender, EventArgs e)
        {
            string SatirListesi = "";

            int[] selRows = gvOrders.GetSelectedRows();

            for (int i = 0; i < selRows.Length; ++i)
            {
                DataRow selRow = gvOrders.GetDataRow(selRows[i]);
                if (i == 0)
                    SatirListesi += selRow["idx"].ToStr();
                else
                    SatirListesi += "," + selRow["idx"].ToStr();
            }

            bool DialogTekrarGoster = false;
            DataTable table = null;

            using (ModelhaneBirimMetraj mbm = new ModelhaneBirimMetraj(SatirListesi))
            {
                //do
                //{
                if (table != null)
                    mbm.gridView1.RefreshDataSource(table);

                if (mbm.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                {
                    //if (BMIstekColumnlariDoluMu(mbm.gridView1, mbm.gridView2))
                    /*if (mbm.gridView2.DataTable().Select("GarniPos is null OR KumasEni is null OR KumasRaporu is null OR ISNULL(DesenYonuId, 0) = 0").GetLength(0) > 0)
                    {
                        XtraMessageBox.Show("Boş Alan Bıraktınız veya Geçersiz Karakter Girişi Yaptınız, Lütfen Tekrar Kontrol Ediniz!", "Uyarı");
                        //table = GridiDataTableYap(mbm.gridView1);
                        //DialogTekrarGoster = true;
                            
                    }
                    else
                    {
                        ExecuteNonQuery("UpdModelhaneBirimMetraj", mbm.gridView1.DataTable().Serialize(), mbm.gridView2.DataTable().Serialize());//mbm.gridView1.Serialize(), mbm.gridView2.Serialize());
                        //if (DialogTekrarGoster)
                        //    DialogTekrarGoster = false;
                    }*/
                    DialogTekrarGoster = true;

                }
                else
                    DialogTekrarGoster = false;
                //} while (DialogTekrarGoster);
            }
        }

        public void ModelhanedenBirimMetrajIste2(object sender, EventArgs e)
        {
            string SatirListesi = "";

            SatirListesi = gvOrders.GetSelectedValues("idx");

            using (ModelhaneBMIstek mbm = new ModelhaneBMIstek(SatirListesi))
            {
                if (mbm.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                {
                    bool DialogTekrarGoster = true;
                }
                //btnGetir.PerformClick();
                //btnGetir_Click(null, null);
                DataTable TalepTarihleri = ExecuteDataTable("GetBMTalepTrh", SatirListesi);

                foreach(DataRow r in TalepTarihleri.Rows)
                {
                    int rh = gvOrders.LocateByValue("idx", r["idx"].ToInt());
                    gvOrders.SetRowCellValue(rh, "BMTalepTrh", r["BMTalepTrh"].ToDate());
                }
            }
        }
        #endregion

        #region İstek kolonları dolu
        public bool BMIstekColumnlariDoluMu(GridView gv1, GridView gv2)
        {
            bool AllColumnsDolu = true;
            string cellValue0, cellValue1, cellValue2, cellValue3, cellValue6;
            int cellValue4;
            decimal cellValue5;

            //for (int i = 0; i < gv1.DataRowCount; ++i)
            //{
            cellValue0 = gv1.GetFocusedDataRow()["Notlar"].ToStr();

            if (cellValue0 == null || cellValue0.Equals(String.Empty))
            {
                AllColumnsDolu = false;
                //      break;
            }
            //}

            if (AllColumnsDolu)
            {
                for (int i = 0; i < gv2.DataRowCount; ++i)
                {
                    cellValue1 = gv2.GetRowCellValue(gv2.GetRowHandle(i), "GarniPos").ToStr();
                    cellValue2 = gv2.GetRowCellValue(gv2.GetRowHandle(i), "KumasEni").ToStr();
                    cellValue3 = gv2.GetRowCellValue(gv2.GetRowHandle(i), "KumasRaporu").ToStr();
                    cellValue4 = gv2.GetRowCellValue(gv2.GetRowHandle(i), "DesenYonuId").ToInt(-1);
                    //cellValue5 = gv2.GetRowCellValue(gv2.GetRowHandle(i), "BM").ToDecimal();
                    //cellValue6 = gv2.GetRowCellValue(gv2.GetRowHandle(i), "YikamaSonucu").ToStr();
                    if (cellValue1 == null || cellValue1.Equals(String.Empty)
                        || cellValue2 == null || cellValue2.Equals(String.Empty)
                        || cellValue3 == null || cellValue3.Equals(String.Empty)
                        || cellValue4 == -1
                        //|| cellValue5 == null || cellValue5 == 0
                        //|| cellValue6 == null || cellValue6.Equals(String.Empty)
                        )
                    {
                        AllColumnsDolu = false;
                        break;
                    }
                }
            }
            return AllColumnsDolu;
        }
        #endregion

        #region Kesim bilgi formu
        private void KesimBilgi_Click(object sender, EventArgs e)
        {
            string idxs = gvOrders.GetSelectedValues("idx");
            DataRow[] dr = ds.Orders.Select("idx IN (" + idxs + ") and ISNULL(DosyaNo,'')=''");
            if (dr.Length > 0)
            {
                XtraMessageBox.Show("Seçtiğiniz satırlarda dosya numarası alınmamış satırlar var. Lütfen seçtiğiniz satırları kontrol ediniz", "Critical");
                return;
            }

            DataRow[] drOrders = ds.Orders.Select("idx IN (" + idxs + ")");
            if (drOrders.Length > 0)
            {
                MyData.OrdersDataTable dtOrders = new MyData.OrdersDataTable();

                foreach (int rowHandle in gvOrders.GetSelectedRows())
                    if (rowHandle > -1)
                    {
                        int idx = gvOrders.GetRowCellValue(rowHandle, "idx").ToInt();
                        DataRow drOrder = ds.Orders.FindByidx(idx);
                        dtOrders.ImportRow(drOrder);
                    }

                DataTable distinctModel = dtOrders.DefaultView.ToTable(true, "Model", "DosyaNo");

                string Model = distinctModel.Rows[0]["Model"].ToStr();
                string DosyaNo = distinctModel.Rows[0]["DosyaNo"].ToStr();
                DataTable dtModel = dtOrders.Select("Model = '" + Model + "' and Isnull(DosyaNo,'') ='" + DosyaNo + "'").CopyToDataTable();
                string ModelIdx = dtModel.GetValuesofSpecifiedColumn("idx", ",");

                xrKesimBilgiFormu Kesim = new xrKesimBilgiFormu(ModelIdx, "GetOrdersKesimBilgiFormu");
                Kesim.CreateDocument();
                Kesim.PrintingSystem.ContinuousPageNumbering = false;

                xrKesimBilgiFormu Kesim1;

                for (int i = 1; i < distinctModel.Rows.Count; i++)
                {
                    Model = distinctModel.Rows[i]["Model"].ToStr();
                    DosyaNo = distinctModel.Rows[i]["DosyaNo"].ToStr();
                    dtModel = dtOrders.Select("Model = '" + Model + "' and Isnull(DosyaNo,'') ='" + DosyaNo + "'").CopyToDataTable();

                    ModelIdx = dtModel.GetValuesofSpecifiedColumn("idx", ",");


                    Kesim1 = new xrKesimBilgiFormu(ModelIdx, "GetOrdersKesimBilgiFormu");
                    Kesim1.CreateDocument();
                    Kesim.Pages.AddRange(Kesim1.Pages);
                }
                Kesim.ShowPreviewDialog();
            }
        } 
        #endregion

        #region Alan setle
        private void AlanSetle(object sender, EventArgs e)
        {
            bbiSave.PerformClick();

            string idxs = gvOrders.GetSelectedValues("idx");

            if (idxs != String.Empty)
            {
                gvOrders.EndEditing();
                using (DegerSetle s = new DegerSetle(idxs))
                {
                    s.ShowDialog();
                    if (s.updated)
                        Rfrsh();
                }
            }
        } 
        #endregion

        #region Kesim föyü önizleme
        private void KesimFoyuOnizleme(object sender, EventArgs e)
        {
            string idxs = gvOrders.GetSelectedValues("idx");

            if (idxs != String.Empty)
            {
                gvOrders.CloseEditor();
                bsOrders.EndEdit();
                if (ds.HasChanges())
                {
                    bbiSave.PerformClick();
                }

                DataTable dt = ds.Orders.Select("idx IN (" + idxs + ")").CopyToDataTable();
                foreach (DataRow drt in dt.Rows)
                    if (drt["TotalComputed"].ToInt() == 0)
                    {
                        XtraMessageBox.Show("Seçtiğiniz satırlarda adet girilmemiş satır(lar) var. Lütfen seçtiğiniz satırları kontrol ediniz", "Critical");
                        return;
                    }

                DataRow[] dr = ds.Orders.Select("idx IN (" + idxs + ") and ISNULL(DosyaNo,'')<>''");
                if (dr.Length > 0 && dr.Length < ds.Orders.Select("idx IN (" + idxs + ")").Length)
                {
                    XtraMessageBox.Show("Seçtiğiniz satırların bir kısmında dosya numarası alınmış. Lütfen seçtiğiniz satırları kontrol ediniz", "Critical");
                    return;
                }
                else if (dr.Length == 0)
                {
                    //DataTable dt = ds.Orders.Select("idx IN (" + idxs + ")").CopyToDataTable();

                    bool ExistEmptyModel = dt.Select("Isnull(Model,'') = ''").Length > 0;
                    if (ExistEmptyModel)
                    {
                        XtraMessageBox.Show("Model bilgisi boş olamaz !", "Critical");
                        return;
                    }
                    int countModel = Convert.ToInt16(dt.Compute("Count(Model)", "Model ='" + dt.Rows[0]["Model"].ToString() + "'"));
                    if (dt.Rows.Count > countModel)
                    {
                        XtraMessageBox.Show("Seçtiğiniz satırlarda farklı model bilgileri mevcut. Lütfen aynı modele ait satırları seçin !", "Critical");
                        return;
                    }

                    int countDagilim = Convert.ToInt16(dt.Compute("Count(DagilimId)", "DagilimId ='" + dt.Rows[0]["DagilimId"].ToString() + "'"));
                    if (dt.Rows.Count > countDagilim)
                    {
                        XtraMessageBox.Show("Seçtiğiniz satırlarda farklı dağılım bilgileri mevcut. Lütfen dağılım bilgisini kontrol edin !", "Critical");
                        return;
                    }

                    int yanlisBM = dt.Select("TahminiBM>3").Length;
                    if (yanlisBM > 0)
                    {
                        XtraMessageBox.Show("Seçtiğiniz satırlarda yanlış girilmiş TAHMİNİ BİRİM METRAJLAR var.\n\nNot: Ana beden birim metrajını MT. cinsinden giriniz !", "Critical");
                        return;
                    }

                    int BosEn = dt.Select("TopEni is null or (Product1Id is not null and Garni1En is null) or (Product2Id is not null and Garni2En is null)or (Product3Id is not null and Garni3En is null)or (Product4Id is not null and Garni4En is null)or (Product5Id is not null and Garni5En is null)or (Product6Id is not null and Garni6En is null)").Length;
                    if (BosEn > 0)
                    {
                        if (XtraMessageBox.Show("Seçtiğiniz satırlarda girilmemiş en bilgileri var. Yine de kesim föyü çıkarmak ister misiniz ?", "Critical", MessageBoxButtons.YesNo) == System.Windows.Forms.DialogResult.No)
                            return;
                    }

                    //int DikisIpi = dt.Select("DikisIpi is null").Length;
                    //if(DikisIpi > 0)
                    //{
                    //    if (XtraMessageBox.Show("Seçtiğiniz satırlarda girilmemiş Dikiş ipi bilgileri var. Yine de kesim föyü çıkarmak ister misiniz ?","Critical", MessageBoxButtons.YesNo) == System.Windows.Forms.DialogResult.No)
                    //        return;
                    //}
                }

                //Düğme ve ilik renklerini birleştirmek için
                if (CustomerId == 17)
                {
                    ExecuteNonQuery("UpdCogDugmeBilgileri", idxs);
                    Rfrsh();
                }

                string FoyTipi = ExecuteScalar("GetFoyTipi", CustomerId).ToStr();
                DataTable dta = ExecuteDataTable("GetGenericFoyKontrol", idxs, CustomerId);

                if (dta.Rows.Count > 1)
                {
                    string[] a = new string[20];
                    List<string> caption = new List<string>();
                    //string[] caption = new string[20];
                    foreach (DataColumn column in dta.Columns)
                    {
                        string ilkDeger = dta.Rows[0][column].ToStr();
                        foreach (DataRow dtr in dta.Rows)
                        {
                            if (dtr[column].ToStr().Trim() != ilkDeger.Trim())
                            {
                                if (!caption.Contains(column.Caption))
                                    caption.Add(column.Caption);
                            }
                        }

                    }
                    string b = "";
                    for (int i = 0; i < caption.Count; i++)
                    {
                        b += caption[i].ToStr() + "\n";

                    }
                    XtraMessageBox.Show("Seçtiğiniz satırlarda aşağıda belirtilen alanlarda farklı girilmiş bilgiler var. Lütfen kontrol edip tekrar deneyiniz.\n\n" + b + "", "Critical");
                }
                else
                {
                    bool BasicFoy = FoyTipi == "Basit";
                    XtraReport barcode;
                    if (!BasicFoy)
                    {
                        barcode = new xrKesimWestbrook(idxs, "GetGenericFoy");

                    }
                    else
                        barcode = new xrKaufKesimFoyu(idxs);

                    barcode.ShowPreviewDialog();
                }

            }
        } 
        #endregion

        #region Dosya numarası al
        private void KesimFoyu_Click(object sender, EventArgs e)
        {
            bool hasDosyaNo = false;
            bool isNumune = false;
            string idxs = gvOrders.GetSelectedValues("idx");

            if (idxs != String.Empty)
            {
                gvOrders.CloseEditor();
                bsOrders.EndEdit();
                if (ds.HasChanges())
                {
                    bbiSave.PerformClick();
                }

                DataTable dt = ds.Orders.Select("idx IN (" + idxs + ")").CopyToDataTable();
                foreach (DataRow drt in dt.Rows)
                    if (drt["TotalComputed"].ToInt() == 0)
                    {
                        XtraMessageBox.Show("Seçtiğiniz satırlarda adet girilmemiş satır(lar) var. Lütfen seçtiğiniz satırları kontrol ediniz", "Critical");
                        return;
                    }

                DataRow[] drBosTermin = ds.Orders.Select("idx IN (" + idxs + ") and Termin is null");
                if (drBosTermin.Length > 0)
                {
                    ShowErrorMessage("Termin tarihi girmelisiniz");
                    return;
                }

                DataRow[] dr = ds.Orders.Select("idx IN (" + idxs + ") and ISNULL(DosyaNo,'')<>''");
                if (dr.Length > 0 && dr.Length < ds.Orders.Select("idx IN (" + idxs + ")").Length)
                {
                    XtraMessageBox.Show("Seçtiğiniz satırlarda dosya numarası alınmış satırlar var. Lütfen seçtiğiniz satırları kontrol ediniz", "Critical");
                    return;
                }
                else if (dr.Length == ds.Orders.Select("idx IN (" + idxs + ")").Length && dr.Length > 0)
                {
                    if (XtraMessageBox.Show("Seçtiğiniz satırların tamamı için dosya numarası alınmış. Yine de kesim föyü çıkarmak ister misiniz ?", "Critical", MessageBoxButtons.YesNo) == System.Windows.Forms.DialogResult.No)
                        return;
                    hasDosyaNo = true;
                }
                else if (dr.Length == 0)
                {
                    //DataTable dt = ds.Orders.Select("idx IN (" + idxs + ")").CopyToDataTable();

                    bool ExistEmptyModel = dt.Select("Isnull(Model,'') = ''").Length > 0;
                    if (ExistEmptyModel)
                    {
                        XtraMessageBox.Show("Model bilgisi boş olamaz !", "Critical");
                        return;
                    }

                    int countModel = Convert.ToInt16(dt.Compute("Count(Model)", "Model ='" + dt.Rows[0]["Model"].ToString() + "'"));
                    if (dt.Rows.Count > countModel)
                    {
                        XtraMessageBox.Show("Seçtiğiniz satırlarda farklı model bilgileri mevcut. Lütfen aynı modele ait satırları seçin !", "Critical");
                        return;
                    }

                    int countTalepTipi = Convert.ToInt16(dt.Compute("Count(TalepTipiId)", "TalepTipiId ='" + dt.Rows[0]["TalepTipiId"] + "'"));
                    if (dt.Rows.Count > countTalepTipi)
                    {
                        XtraMessageBox.Show("Farklı talep tipindeki siparişleri aynı dosyada birleştiremezsiniz !", "Critical");
                        return;
                    }

                    int countDagilim = Convert.ToInt16(dt.Compute("Count(DagilimId)", "DagilimId ='" + dt.Rows[0]["DagilimId"].ToString() + "'"));
                    if (dt.Rows.Count > countDagilim)
                    {
                        XtraMessageBox.Show("Seçtiğiniz satırlarda farklı dağılım bilgileri mevcut. Lütfen dağılım bilgisini kontrol edin !", "Critical");
                        return;
                    }

                    int yanlisBM = dt.Select("TahminiBM>3").Length;
                    if (yanlisBM > 0)
                    {
                        XtraMessageBox.Show("Seçtiğiniz satırlarda yanlış girilmiş TAHMİNİ BİRİM METRAJLAR var.\n\nNot: Ana beden birim metrajını MT. cinsinden giriniz !", "Critical");
                        return;
                    }

                    int BosEn = dt.Select("TopEni is null or (Product1Id is not null and Garni1En is null) or (Product2Id is not null and Garni2En is null)or (Product3Id is not null and Garni3En is null)or (Product4Id is not null and Garni4En is null)or (Product5Id is not null and Garni5En is null)or (Product6Id is not null and Garni6En is null)").Length;
                    if (BosEn > 0)
                    {
                        if (XtraMessageBox.Show("Seçtiğiniz satırlarda girilmemiş en bilgileri var. Yine de kesim föyü çıkarmak ister misiniz ?", "Critical", MessageBoxButtons.YesNo) == System.Windows.Forms.DialogResult.No)
                            return;
                    }

                    //int DikisIpi = dt.Select("DikisIpi is null").Length;
                    //if (DikisIpi > 0)
                    //{
                    //    if (XtraMessageBox.Show("Seçtiğiniz satırlarda girilmemiş Dikiş ipi bilgileri var. Yine de kesim föyü çıkarmak ister misiniz ?", "Critical", MessageBoxButtons.YesNo) == System.Windows.Forms.DialogResult.No)
                    //        return;
                    //}

                    DataTable dtYakaManset = ExecuteDataTable("CheckMansetYakaEmpty", idxs);
                    bool IsMansetYakaEmpty = dtYakaManset.Select("Isnull(Manset,'') = '' or Isnull(Yaka,'') =''").Length > 0;

                    if (IsMansetYakaEmpty)
                    {
                        XtraMessageBox.Show("Seçtiğiniz satırlarda eksik yaka/manşet bilgileri var. Lütfen Model Detayları ekranından yaka/manşet alanlarını doldurun", "Critical");
                        return;
                    }

                    DataTable dta = ExecuteDataTable("GetGenericFoyKontrol", idxs, CustomerId);

                    if (dta.Rows.Count > 1)
                    {
                        string[] a = new string[20];
                        List<string> caption = new List<string>();
                        //string[] caption = new string[20];
                        foreach (DataColumn column in dta.Columns)
                        {
                            string ilkDeger = dta.Rows[0][column].ToStr();
                            foreach (DataRow dtr in dta.Rows)
                            {
                                if (dtr[column].ToStr().Trim() != ilkDeger.Trim())
                                {
                                    if (!caption.Contains(column.Caption))
                                        caption.Add(column.Caption);
                                }
                            }

                        }
                        string b = "";
                        for (int i = 0; i < caption.Count; i++)
                        {
                            b += caption[i].ToStr() + "\n";

                        }
                        XtraMessageBox.Show("Seçtiğiniz satırlarda aşağıda belirtilen alanlarda farklı girilmiş bilgiler var. Lütfen kontrol edip tekrar deneyiniz.\n\n" + b + "", "Critical");
                        return;
                    }

                    using (KaufDosyaBilgileri kdb = new KaufDosyaBilgileri(idxs, dt))
                        if (kdb.ShowDialog() == DialogResult.Cancel)
                            return;
                        else
                        {
                            GetDetails("Orders", "UpdatedKaufKesimNo", idxs);
                            DataTable dt2 = ds.Orders.Select("idx IN (" + idxs + ")").CopyToDataTable();
                            string DosyaNo = dt2.Rows[0].ItemArray.GetValue(10).ToStr();
                            isNumune = DosyaNo.StartsWith("N") == true ? true : false;
                            CutOrder();
                        }
                }

                //Düğme ve ilik renklerini birleştirmek için
                if (CustomerId == 17)
                {
                    ExecuteNonQuery("UpdCogDugmeBilgileri", idxs);
                    Rfrsh();
                }

                string FoyTipi = ExecuteScalar("GetFoyTipi", CustomerId).ToStr();
                bool BasicFoy = FoyTipi == "Basit";

                XtraReport barcode;
                if (!BasicFoy)
                    barcode = new xrKesimWestbrook(idxs, "GetGenericFoy");
                else
                {
                    barcode = new xrKaufKesimFoyu(idxs);
                }

                barcode.CreateDocument();

                // Reset all page numbers in the resulting document. 
                barcode.PrintingSystem.ContinuousPageNumbering = true;

                // Create a Print Tool and show the Print Preview form. 
                ReportPrintTool printTool = new ReportPrintTool(barcode);
                printTool.ShowPreviewDialog();

                //barcode.ShowPreview();

                if (!(hasDosyaNo || isNumune))
                {
                    langIndex = beiDil.EditValue.ToInt();
                    Planlama.xrDosyaKapama xr = new Planlama.xrDosyaKapama(idxs, CustomerId, langIndex);
                    xr.CreateDocument();
                    xr.PrintingSystem.ContinuousPageNumbering = true;
                    ReportPrintTool printTool2 = new ReportPrintTool(xr);
                    printTool2.ShowPreviewDialog();
                    // Add all pages of the 2nd report to the end of the 1st report. 
                    //barcode.Pages.AddRange(xr.Pages);

                    xrKesimBilgiFormu kesim = new xrKesimBilgiFormu(idxs, "GetOrdersKesimBilgiFormu");
                    kesim.CreateDocument();
                    kesim.PrintingSystem.ContinuousPageNumbering = true;
                    ReportPrintTool printTool3 = new ReportPrintTool(kesim);
                    printTool3.ShowPreviewDialog();

                    int BrandId = ds.Orders.Select("idx IN (" + idxs + ")")[0]["BrandId"].ToInt();
                    Rapor.Aksesuar.xrAksesuarFoyu foy = new Rapor.Aksesuar.xrAksesuarFoyu(idxs, BrandId);
                    foy.ShowPreviewDialog();
                }
            }
        } 
        #endregion

        #region Dosyaya ekle
        private void DosyayaEkle_Click(object sender, EventArgs e)
        {
            string idxs = gvOrders.GetSelectedValues("idx");
            if (idxs != String.Empty)
            {
                gvOrders.CloseEditor();
                bsOrders.EndEdit();
                if (ds.HasChanges())
                {
                    bbiSave.PerformClick();
                }


                DataRow[] drBosTermin = ds.Orders.Select("idx IN (" + idxs + ") and Termin is null");
                if (drBosTermin.Length > 0)
                {
                    ShowErrorMessage("Termin tarihi girmelisiniz");
                    return;
                }

                DataRow[] dr = ds.Orders.Select("idx IN (" + idxs + ") and ISNULL(DosyaNo,'')<>''");
                if (dr.Length > 0)
                {
                    XtraMessageBox.Show("Seçtiğiniz satırlarda dosya numarası alınmış satırlar var. Lütfen seçtiğiniz satırları kontrol ediniz", "Critical");
                    return;
                }
                else if (dr.Length == 0)
                {
                    using (VarolanDosyayaEkle vde = new VarolanDosyayaEkle())
                        if (vde.ShowDialog() == DialogResult.OK)
                        {
                            string DosyaNo = vde.DosyaNo;
                            DataTable dt = ds.Orders.Select("idx IN (" + idxs + ")").CopyToDataTable();

                            if (ds.Orders.Select("DosyaNo = '" + DosyaNo + "'").Length == 0)
                            {
                                XtraMessageBox.Show("'" + DosyaNo + "' numaralı dosya bulunamadı!", "Hata");
                                return;
                            }

                            int isDosyaClosed = ExecuteScalar("IsClosedDosya", DosyaNo).ToInt(-1);

                            if (isDosyaClosed == 1)
                            {
                                XtraMessageBox.Show("Bu dosya kapanmış veya iptal edilmiş.", "Hata");
                                return;
                            }

                            DataTable dtEkle = ds.Orders.Select("DosyaNo = '" + DosyaNo + "'").CopyToDataTable();
                            dt.Merge(dtEkle);

                            int countModel = Convert.ToInt16(dt.Compute("Count(Model)", "Model ='" + dt.Rows[0]["Model"].ToString() + "'"));
                            if (dt.Rows.Count > countModel)
                            {
                                XtraMessageBox.Show("Seçtiğiniz satırlarda veya eklemek istediğiniz dosyada farklı model bilgileri mevcut. Lütfen aynı modele ait satırları seçin !", "Hata");
                                return;
                            }

                            int countDagilim = Convert.ToInt16(dt.Compute("Count(DagilimId)", "DagilimId ='" + dt.Rows[0]["DagilimId"].ToString() + "'"));
                            if (dt.Rows.Count > countDagilim)
                            {
                                XtraMessageBox.Show("Seçtiğiniz satırlarda farklı dağılım bilgileri mevcut. Lütfen dağılım bilgisini kontrol edin !", "Hata");
                                return;
                            }

                            int BosEn = dt.Select("TopEni is null or (Product1Id is not null and Garni1En is null) or (Product2Id is not null and Garni2En is null)").Length;
                            if (BosEn > 0)
                            {
                                if (XtraMessageBox.Show("Seçtiğiniz satırlarda girilmemiş en bilgileri var. Yine de " + DosyaNo + " numaralı dosyaya eklemek ister misiniz ?", "Uyarı", MessageBoxButtons.YesNo) == System.Windows.Forms.DialogResult.No)
                                    return;
                            }

                            ExecuteNonQuery("UpdKaufKesimNoEkle", idxs, DosyaNo);
                            GetDetails("Orders", "UpdatedKaufKesimNo", idxs);
                            CutOrder();
                        }
                }
            }
        } 
        #endregion              

        #region Model ismi renklendirme
        private void gv_RowCellStyle(object sender, DevExpress.XtraGrid.Views.Grid.RowCellStyleEventArgs e)
        {
            if (e.RowHandle > -1)
            {
                if (e.Column.FieldName.Length == 3 &&
                    e.Column.FieldName.StartsWith("A"))
                {
                    DataRow dr = gvOrders.GetDataRow(e.RowHandle);
                    int D = intParse(dr["DagilimId"]);

                    e.Appearance.ForeColor = (DagilimId != D ? Color.LightSlateGray : Color.Black);
                }
                if (e.Column.FieldName == "Model")
                {
                    e.Appearance.Font = new Font(DevExpress.Utils.AppearanceObject.DefaultFont, FontStyle.Bold);
                    int SezonId = gvOrders.GetRowCellValue(e.RowHandle, "SezonId").ToInt();
                    int BrandId = gvOrders.GetRowCellValue(e.RowHandle, "BrandId").ToInt();
                    int TalepTipiId = gvOrders.GetRowCellValue(e.RowHandle, "TalepTipiId").ToInt();
                    string Model = gvOrders.GetRowCellValue(e.RowHandle, "Model").ToString();

                    if (ds.Tables["Table4"] != null)
                    {
                        int ModelCount = ds.Tables["Table4"].Select("Model='" + Model + "' and SezonId =" + SezonId + " and BrandId =" + BrandId + " and TalepTipiId =" + TalepTipiId).Length;
                        if (ModelCount > 0)
                        {
                            e.Appearance.ForeColor = Color.Green;
                        }
                        else
                            e.Appearance.ForeColor = Color.Red;
                    }
                }
            }
        } 
        #endregion

        #region Cellvaluechanged
        private void gvOrders_CellValueChanged(object sender, DevExpress.XtraGrid.Views.Base.CellValueChangedEventArgs e)
        {
            gvOrders.CellValueChanged -= gvOrders_CellValueChanged;
            //CORTIGIANI (EFEEM TEKSTİL) için dağılımdan adet hesaplattırıyoruz :
            if (e.Column.Caption == "Dagit")
            {
                int DagilimToplami = 0;
                decimal TahminiBM = 0;
                TahminiBM = gvOrders.GetRowCellValue(e.RowHandle, "TahminiBM").ToDecimal();
                for (int dh = 1; dh < 29; dh++)
                {
                    gvOrders.CellValueChanged -= gvOrders_CellValueChanged;
                    if (dh < 10)
                        DagilimToplami += gvOrders.GetRowCellValue(e.RowHandle, "A0" + dh.ToString()).ToInt();
                    else
                        DagilimToplami += gvOrders.GetRowCellValue(e.RowHandle, "A" + dh.ToString()).ToInt();
                }
                if (DagilimToplami == 0 || TahminiBM == 0)
                {
                    XtraMessageBox.Show("Tahmini BM ve/veya sipariş adetleri girilmemiş.");
                    gvOrders.SetRowCellValue(e.RowHandle, "Dagit", null);
                    return;
                }
                int DagilimHesapla = gvOrders.GetRowCellValue(e.RowHandle, "Dagit").ToInt();
                decimal carpan = 0;
                if (DagilimHesapla > 0)
                {
                    carpan = (DagilimHesapla / TahminiBM) / DagilimToplami;
                    for (int dh = 1; dh < 29; dh++)
                    {
                        gvOrders.CellValueChanged -= gvOrders_CellValueChanged;
                        if (dh < 10)
                            gvOrders.SetRowCellValue(e.RowHandle, "A0" + dh.ToString(), (carpan * gvOrders.GetRowCellValue(e.RowHandle, "A0" + dh.ToString()).ToInt()).ToInt());
                        else
                            gvOrders.SetRowCellValue(e.RowHandle, "A" + dh.ToString(), (carpan * gvOrders.GetRowCellValue(e.RowHandle, "A" + dh.ToString()).ToInt()).ToInt());
                    }
                }
            }
            else if (e.Column.Caption == "DagilimId")
                DagilimChanged();

            else if (e.Column.Caption == "Termin" && this.gvOrders.GetRowCellValue(e.RowHandle, "idx").ToInt(-1) > 0)
            {
                items.Add(new UpdatedCells
                {
                    idx = this.gvOrders.GetRowCellValue(e.RowHandle, "idx").ToStr(),
                    termin = this.gvOrders.GetRowCellValue(e.RowHandle, "Termin").ToStr()
                });
            }

            gvOrders.CellValueChanged += gvOrders_CellValueChanged;
        } 
        #endregion

        #region Kaydet
        private void bbiSave_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            gvOrders.EndEditing();
            gvMyTreeLines.EndEditing();
            if (ds.Orders.Select("BrandId is null").Length > 0)
            {
                //XtraMessageBox.Show("Marka alanı boş bırakılamaz !", "Eksik giriş", MessageBoxButtons.OK);
                //return;
                throw new ApplicationException("Marka alanı boş bırakılamaz !");
            }
            if (ds.Orders.Select("SezonId is null").Length > 0)
            {
                //XtraMessageBox.Show("SezonId alanı boş bırakılamaz !", "Eksik giriş", MessageBoxButtons.OK);
                //return;
                throw new ApplicationException("SezonId alanı boş bırakılamaz !");
            }

            if (ds.Orders.Select("TaleptipiId is null").Length > 0)
            {
                //XtraMessageBox.Show("Talep tipi boş bırakılamaz !", "Eksik giriş", MessageBoxButtons.OK);
                //return;
                throw new ApplicationException("Talep tipi boş bırakılamaz !");
            }



            int maxIdx = ds.Orders.Select("idx=max(idx)")[0][0].ToInt(-1);
            string mailContentUpdateAdet = "";
            string mailContentUpdateTermin = "";
            string mailContentNewOrder = "";
            string mailSubject = "";
            string mailContent = "";
            string customerName = AppSession.Lookups.V_Customer.FindByCustomerId(CustomerId).Name;

            try
            {

                foreach (DataRow dr in ds.Orders.Select("Total <> TotalComputed"))
                    mailContentUpdateAdet += "<b>idx:</b> " + dr["idx"] +
                                             " <b>Talep Tipi:</b> " + AppSession.Lookups.TalepTipi.FindByTalepTipiId((int)dr["TalepTipiId"]).Name + "<br />" +
                                             "<b>Son Toplam:</b> " + dr["Total"] + "<br /><br />";


                foreach (UpdatedCells item in this.items)
                    mailContentUpdateTermin += "<b>idx:</b> " + item.idx +
                                               " <b>Talep Tipi:</b> " + AppSession.Lookups.TalepTipi.FindByTalepTipiId(ds.Orders.FindByidx(int.Parse(item.idx)).TalepTipiId).Name + "<br />" +
                                               "<b>Termin Tarihi:</b> " + item.termin + "<br /><br />";

                ds.Orders.Columns["AksesuarAdedi"].Expression =
                ds.Orders.Columns["ToplamFiyat"].Expression =
                ds.Orders.Columns["Total"].Expression =
                ds.Orders.Columns["FabricOK"].Expression =
                ds.Orders.Columns["CutOrder"].Expression = string.Empty;

                DataTable dtOrdersChanged = ds.Orders.GetChanges(DataRowState.Added | DataRowState.Modified);
                if (ds.HasChanges())
                {
                    string ChangedIdxs = string.Empty;
                    if (dtOrdersChanged != null)
                    {
                        ChangedIdxs = dtOrdersChanged.GetValuesofSpecifiedColumn("idx", ",");
                        foreach (DataRow r in ds.Orders.Select("idx in (" + ChangedIdxs + ")"))
                            foreach (DataColumn c in ds.Orders.Columns)
                                if (c.DataType == typeof(string))
                                {
                                    if (r[c].ToStr() == string.Empty)
                                        if (r[c] != DBNull.Value)
                                            r[c] = null;

                                    //if (r[c].ToStr().EndsWith(Environment.NewLine))
                                    //    r[c] = r[c].ToStr().RemoveIfEndsWith(Environment.NewLine);
                                }

                    }

                    Save();

                    if (dtOrdersChanged != null)
                    {
                        DataTable dtGuncel = ExecuteDataTable("UpdAyrimIdByIdx", ChangedIdxs, CustomerId);
                        ds.Orders.Merge(dtGuncel);
                        ds.Orders.AcceptChanges();
                    }
                }

                if (parcala)
                {
                    parcala = false;
                    DataSet dsyeni = Session.DataManager.ExecuteDataSet("OrderSatirParcala", idx, strUpdate);
                    ds.Orders.Merge(dsyeni.Tables[0]);
                    ds.KaufOrdersAksesuar.Merge(dsyeni.Tables[1]);
                    ShowInfoMessage("Satır başarılı bir şekilde parçalandı." + dsyeni.Tables[0].Rows[0]["idx"].ToString() + " ID'li satır oluştu.");
                }
                if (cogalt)
                {
                    cogalt = false;
                    DataSet dsyeni = Session.DataManager.ExecuteDataSet("OrderSatirCogalt", idx2, strInsert);
                    ds.Orders.Merge(dsyeni.Tables[0]);
                    ds.KaufOrdersAksesuar.Merge(dsyeni.Tables[1]);
                    String idxListesi = String.Empty;
                    for (int i = 0; i < dsyeni.Tables[0].Rows.Count; ++i)
                    {
                        if (i == 0)
                            idxListesi = dsyeni.Tables[0].Rows[i]["idx"].ToString();
                        else if (idx2 != dsyeni.Tables[0].Rows[i]["idx"].ToInt())
                            idxListesi += ", " + dsyeni.Tables[0].Rows[i]["idx"].ToString();
                    }
                        ShowInfoMessage("Satır başarılı bir şekilde çoğaltıldı." + idxListesi + " ID'li satır(lar) oluştu.");
                }
                ExecuteNonQuery("UpdateChangedSiparisAdet", CustomerId);

            }
            finally
            {
                ds.Orders.Columns["Total"].Expression = TotalExpression;
                ds.Orders.Columns["ToplamFiyat"].Expression = "GomlekFiyati + ISNULL(Upcharge,0)";
                ds.Orders.Columns["FabricOK"].Expression = "MAX(Child(FK_KaufOrdersCut_KaufOrders_idx).FabricOK)";
                ds.Orders.Columns["CutOrder"].Expression = "MAX(Child(FK_KaufOrdersCut_KaufOrders_idx).CutOrder)";
                ds.Orders.Columns["AksesuarAdedi"].Expression = "Count(Child(FK_KaufOrdersAksesuar_KaufOrders_idx).AksesuarId)";

                gvOrders.RefreshData();
                gvOrders.BestFitColumns();


                foreach (DataRow dr in ds.Orders.Select("idx >" + maxIdx))
                    mailContentNewOrder += "<b>idx:</b> " + dr["idx"] +
                                           " <b>Talep Tipi:</b> " + AppSession.Lookups.TalepTipi.FindByTalepTipiId((int)dr["TalepTipiId"]).Name + "<br /><br />";

                mailSubject = (mailContentNewOrder == "" ? "" : "Yeni Sipariş Kaydı ") +
                              ((mailContentUpdateAdet == "") && (this.items.Count < 1) ? "" : "Sipariş Kaydı Değişikliği");

                mailContent = (mailContentNewOrder == "" ? "" : "<b>YENİ SİPARİŞ KAYDI</b>" + "<br />" + mailContentNewOrder) +
                              (mailContentUpdateAdet == "" ? "" : "<b>ADET DEĞİŞİKLİĞİ</b>" + "<br />" + mailContentUpdateAdet) +
                              (mailContentUpdateTermin == "" ? "" : "<b>TERMİN TARİHİ DEĞİŞİKLİĞİ</b>" + "<br />" + mailContentUpdateTermin);


                if (mailSubject != "" && isProduction)
                {
                    mailContent += "<b>Müşteri:</b> " + customerName + "<br />";
                    Mail.Send("tulay.tuncay@karbel.com", mailSubject, mailContent, "", "");
                    this.items.Clear();
                }
            }
        }
        public class UpdatedCells
        {
            public string idx { get; set; }
            public string termin { get; set; }
        }

        List<UpdatedCells> items = new List<UpdatedCells>(); 
        #endregion

        #region Artikel fiyat al
        private void bbiArtikel_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            gvOrders.CloseEditor();
            bsOrders.EndEdit();
            if (ds.HasChanges())
            {
                bbiSave.PerformClick();
            }
            GetDetails("Orders", "GetKaufGomlekFiyat", 1, CustomerId);
        } 
        #endregion

        #region Dağılım ve tela sütunlarını gösterme
        private void cbAlanlar_EditValueChanged(object sender, EventArgs e)
        {
            string SutunSecimi = cbAlanlar.EditValue.ToString();

            if (SutunSecimi == "Tela Girişi")
            {

                gvOrders.MakeColumnInvisible("A01", "A02", "A03", "A04", "A05", "A06", "A07", "A08", "A09", "A10", "A11", "A12", "A13", "A14", "A15", "A16", "A17", "A18", "A19", "A20", "A21", "A22", "A23", "A24", "A25", "A26", "A27", "A28");
                gvOrders.MakeColumnVisible("TYaka", "TApaciYaka", "TMostraYaka", "TYakaAlt", "TKusak", "TKusakAlti", "TPoligot", "TManset", "TDubleManset", "TMansetVerev", "TMansetAlti", "TMansetPoligot", "TApartura", "TApolet", "TCepKapagi", "TKusakUcu", "TEkstraTela", "TDugmeAlti");

                int i = 500;
                foreach (string tela in "TYaka,TApaciYaka,TMostraYaka,TYakaAlt,TKusak,TKusakAlti,TPoligot,TManset,TDubleManset,TMansetVerev,TMansetAlti,TMansetPoligot,TApartura,TApolet,TCepKapagi,TKusakUcu,TEkstraTela,TDugmeAlti".Split(','))
                {
                    gvOrders.Columns[tela].VisibleIndex = i;
                    i++;
                }
                gvOrders.FocusedColumn = gvOrders.Columns["TYaka"];
            }
            else if (SutunSecimi == "Beden Dağılımı")
            {
                gvOrders.MakeColumnInvisible("TYaka", "TApaciYaka", "TMostraYaka", "TYakaAlt", "TKusak", "TKusakAlti", "TPoligot", "TManset", "TDubleManset", "TMansetVerev", "TMansetAlti", "TMansetPoligot", "TApartura", "TApolet", "TCepKapagi", "TKusakUcu", "TEkstraTela", "TDugmeAlti");
                //gvOrders.MakeColumnVisible("A01", "A02", "A03", "A04", "A05", "A06", "A07", "A08", "A09", "A10", "A11", "A12", "A13", "A14", "A15", "A16", "A17", "A18", "A19", "A20", "A21", "A22", "A23", "A24", "A25", "A26", "A27", "A28");
                gvOrders.YanYanaGetirSagina("DagilimId", "A01", "A02", "A03", "A04", "A05", "A06", "A07", "A08", "A09", "A10", "A11", "A12", "A13", "A14", "A15", "A16", "A17", "A18", "A19", "A20", "A21", "A22", "A23", "A24", "A25", "A26", "A27", "A28");
                gvOrders.Columns["DagilimId"].VisibleIndex = gvOrders.Columns["A01"].VisibleIndex;
                gvOrders.FocusedColumn = gvOrders.Columns["A01"];
                gvOrders.BestFitColumns();
            }
            else
            {
                gvOrders.MakeColumnInvisible("TYaka", "TApaciYaka", "TMostraYaka", "TYakaAlt", "TKusak", "TKusakAlti", "TPoligot", "TManset", "TDubleManset", "TMansetVerev", "TMansetAlti", "TMansetPoligot", "TApartura", "TApolet", "TCepKapagi", "TKusakUcu", "TEkstraTela", "TDugmeAlti");
                gvOrders.MakeColumnInvisible("A01", "A02", "A03", "A04", "A05", "A06", "A07", "A08", "A09", "A10", "A11", "A12", "A13", "A14", "A15", "A16", "A17", "A18", "A19", "A20", "A21", "A22", "A23", "A24", "A25", "A26", "A27", "A28");
            }
        } 
        #endregion
    }
}
